نماوا
 
MSI
 
 
 
موضوع: مختصری در مورد مقایسه تفاوت بین دو تاریخ توسط PHP
 
 
کمک 24
فروش گیفت کارت
فروش گیفت‌کارت - سریع و ارزان
#1
23 مهر 1396 ساعت 12:52:32 (286 روز پيش)
سایت دارکوب
تاریخ عضویت:1396/07/23
تشکر کرده: 0
تشکر شده: 2 بار
 مختصری در مورد مقایسه تفاوت بین دو تاریخ توسط PHP

در برنامه نویسی PHP مواقعی پیش می آید که نیاز دارید دو تاریخ را به یکدیگر مقایسه نمایید و فاصله زمانی بین دو تاریخ را پیدا کنید که در بخش زیر نحوه بدست آوردن آن را به صورت کامل برای شما شرح خواهم داد. تاریخ ها را نمی توانید به صورت عادی از هم منها نمایید و می بایست آنها را به مقدار عددی تبدیل نمایید. برای انجام این کار می توانید از تابع strtotime استفاده نمایید. این تابع تاریخ شما به صورت تاریخ UNIX تبدیل می نماید که این تاریخ فاصله زمان تاریخ شما به ثانیه از زمان یکم 1970 می باشد. در زیر نحوه انجام این کار را به شما نمایش می دهم:


 


$date1 = "2007-03-24 00:00:00";


$date2 = "2009-06-26 00:00:00";


 


$diff = abs(strtotime($date2) - strtotime($date1));


 


$years = floor($diff / (365*60*60*24));


$months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));


$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));


 


printf("%d years, %d months, %d daysn", $years, $months, $days);


 


در کد بالا تاریخ می توانید به صورت تاریخ و زمان نیز باشد. متغییر $diff دو تاریخ را به صورت عددی از یکدیگر منها می نماید و بنابراین $date2 می بایست زمان جدیدتر باشد. برای بدست آوردن تفاوت سالیانه دو تاریخ می بایست فاصله زمانی بدست آماده را به سال تبدیل نمایید و از تابع floor برای روند کردن آن استفاده نمایید. برای بدست آوردن تعداد ماه ابتدا می بایست تعداد سال ها به ثانیه را از تفاوت دو تاریخ به ثانیه کسر نموده و سپس آن را به ماه تبدیل نمایید و برای سایر واحدهای تاریخ نیز به همین ترتیب عمل نمایید. در صورتی که قصد دارید فاصله بین دو تاریخ را به ساعت و دقیقه و همچنین ثانیه بیان نمایید می توانید کدهای زیر را به کد اصلی خود اضافه نمایید.


 


$hour = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24)/ (60*24));


 


$min = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hour*60*60)/ (60));


 


البته می توانید فاصله زمانی بین دو تاریخ را فقط توسط المان های دیگر نظیر ساعت و دقیقه بیان نمایید که در زیر مثال آن را برای شما آورده ام:


 


$hour = floor($diff / (60*24));


$min = floor(($diff - $hour * 60*24) / (24));


 



سایت دارکوب آفلاین
 نقل قول 
2 کاربر از سایت دارکوب بابت این پست تشکر کرده اند.
mosenth , matrix4221489 
#2
21 آذر 1396 ساعت 23:17:43 (226 روز پيش)
mosenth
تاریخ عضویت:1396/09/05
تشکر کرده: 2
تشکر شده: 0 بار
 

درود،
بنده با کد اول جواب گرفتم
ولی حالا می خوام اون دو تا تاریخ ها رو کاربر خودش وارد کنه
این به چه صورت میشه ؟!
mosenth آفلاین
 نقل قول 
 
#3
2 بهمن 1396 ساعت 14:58:52 (184 روز پيش)
fsohrabiii
تاریخ عضویت:1396/11/02
تشکر کرده: 0
تشکر شده: 0 بار
 

ممنون از شما. اما بهتر بود کدها رو در تگ کد می نوشتید تا به درستی نمایش داده شوند

fsohrabiii آفلاین
 نقل قول