مقایسه تفاوت بین دو تاریخ توسط PHP مقایسه تفاوت بین دو تاریخ توسط PHP

رتبه این آیتم
مقایسه تفاوت بین دو تاریخ توسط PHP
رتبه 4 در 11 رای از 1 تا 5

در برنامه نویسی 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 days\n", $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));

18-خرداد-1393

نویسنده این مقاله می باشد که از سال 1381 تا کنون در زمینه طراحی و بهینه سازی وب سایت فعالیت دارد.

شبکه اجتماعی های نویسنده اینستاگرام و لینکدین.

به اشتراک گذاری مطلب در

به اشتراک گذاری در فیس بوک به اشتراک گذاری در توئیتر به اشتراک گذاری در لینکدین

1 نظر

  • علیرضا طراوتی سه شنبه, 09 بهمن 1397 04:03 پست شده توسط علیرضا طراوتی

    با سلام واقعا ممنون بابت وب سایت خوبتون من وقت کمی داشتم برای حل این مشکل ک ب راحتی و با کمی تغیر اون چیزی ک میخاستمو بدست آوردم ممنون

يک نظر بدهيد

موارد ستاره دار الزامی هستند

طراحی سایت دارکوب | هاست دارکوب | دارکوب نام و علامت تجاری ثبت شده این مجموعه می باشد.
دارای مجوز از (سازمان نظام صنفی رایانه ای استان تهران) ، (رتبه 4 شورای عالی انفورماتیک کشور) ، (وزارت فرهنگ و ارشاد اسلامی)
آموزشگاه طراحی سایت و سئو با مجوز رسمی از سازمان فنی و حرفه ای کشور افتتاح شد
دارکوب به عنوان شرکت خلاق توسط معاونت علمی و فناوری ریاست جمهوری برگزیده شد