تاریخ و زمان یکی از جنبه‌های اصلی وب‌سایت‌ها و وب‌اپلیکیشن‌های کاربردی هستند. مدیریت صحیح و دستکاری تاریخ‌ها برای نمایش رویدادهای مختلف، برنامه‌ریزی کارها، دریافت اطلاعات از پایگاه داده، محاسبه زمان و بسیاری از موارد دیگر امری ضروری است. تابع Date در PHP ابزار قدرتمندی است که کار با تاریخ و زمان را ساده می‌کند. این تابع به توسعه دهندگان امکان می‌دهد تا تاریخ‌ها را به روش‌های مختلف قالب‌بندی کنند و عملیات ساده تاریخ و زمان را نیز انجام دهند. در مطلب پیشِ رو از مجله فرادرس به بررسی تابع Date در PHP و قابلیت‌های آن خواهیم پرداخت. با مطالعه این مطلب با روش‌های مختلف قالب‌بندی تاریخ، استخراج و تفکیک اجزای یک تاریخ خاص، انجام محاسبات ریاضی بر روی تاریخ‌ها و مدیریت مناطق زمانی در PHP آشنا خواهید شد.

فهرست مطالب این نوشته
997696

این نوشته راهنمای جامعی است که به توسعه دهندگان تازه‌کار در درک اصول اولیه تابع Date و به توسعه دهندگان با تجربه در یادگیری تکنیک‌های پیشرفته کار با تاریخ و زمان کمک خواهد کرد.

کاربرد تابع Date در PHP چیست؟

Date یکی از توابع داخلی PHP است که به منظور قالب‌بندی تاریخ و زمان مورد استفاده قرار می‌گیرد. این تابع با توجه به پارامترهای دریافتی یک مقدار رشته‌ای را در خروجی برمی‌گرداند که نشان دهنده تاریخ و زمان است. به عنوان مثال، می‌توان از تابع Date در PHP برای نمایش تاریخ و زمان فعلی یا آینده در صفحه وب استفاده کرد.

علاوه بر این، در صورت دریافت اطلاعات از پایگاه داده MySQL با استفاده از PHP می‌توان از تابع Date برای تبدیل مقادیر دریافتی به فرمت قابل خواندن استفاده کرد. از این قابلیت برای درج تاریخ و زمان مربوط به پست‌های وبلاگ یا مقالات خبری استفاده می‌شود. در ادامه این نوشته تابع Date در PHP به همراه چندین مثال کاربردی و متدهای موجود در آن به طور کامل مورد بررسی قرار خواهد گرفت.

برنامه نویس در حال طراحی سایت با زبان PHP در حالی که می خندد

سینتکس تابع Date در PHP

در این بخش به بررسی سینتکس تابع Date و پارامترهای دریافتی آن خواهیم پرداخت. سینتکس تابع Date در PHP به صورت زیر است.

1date(string $format, int $timestamp): string;

با توجه به قطعه کد ارائه شده در بالا تابع Date دارای دو پارامتر ورودی است و مقداری از نوع رشته را نیز برمی‌گرداند. یکی از پارامترهای دریافتی تابع Date از نوع اجباری و پارامتر دیگر نیز از نوع اختیاری است. در ادامه پارامترهای ورودی تابع Date را مورد بررسی قرار خواهیم داد.

  • $format

     : این پارامتر از نوع رشته‌ای و اجباری است که نحوه قالب‌بندی تاریخ و زمان را مشخص می‌کند.

  • $timestamp

     : این پارامتر از نوع برچسب زمان است که به بیان دقیق‌تر تعداد ثانیه‌های سپری شده از ۱ ژانویه ۱۹۷۰ میلادی (۱۳۴۸ شمسی) تا یک تاریخ خاص را مشخص می‌کند. قرار دادن این پارامتر به عنوان ورودی در تابع Date اختیاری است و در صورت عدم درج آن تابع به طور پیش‌فرض از زمان فعلی سیستم استفاده می‌کند.

منظور از timestamp در PHP چیست؟

«مُهر زمانی یونیکس» (Unix Timestamp) یک عدد صحیح ساده را نشان می‌دهد که بیانگر تعداد ثانیه‌های سپری شده از ۱ ژانویه ۱۹۷۰ میلادی (۱۳۴۸ شمسی) تا یک تاریخ خاص است. در واقع timestamp یک استاندارد پذیرفته شده و رایج در علوم کامپیوتر است، زیرا مستقل از منطقه زمانی عمل می‌کند و برای تمام مناطق زمانی یک عدد ثابت را ارائه می‌دهد. استفاده از timestamp انجام محاسبات ساده با استفاده از اطلاعات زمانی را تسهیل می‌کند. قطعه کد زیر نحوه به دست آوردن timestamp در PHP برای لحظه فعلی را نشان می‌دهد.

1<?php
2  echo time();
3؟>

خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود.

1716884228

مقدار ارائه شده در بالا یک عدد صحیح از نوع timestamp را نشان می‌دهد. با استفاده از این مقدار می‌توان تاریخ و زمان دقیق را با توجه به منطقه زمانی مورد نظر به دست آورد.

فرمت های تاریخ در PHP

تابع Date در PHP به منظور نمایش زمان و تاریخ مورد استفاده قرار می‌گیرد. همان طور که پیش‌تر نیز عنوان شد این تابع یک پارامتر اجباری از نوع رشته‌ای با نام format

 دریافت می‌کند که نحوه قالب‌بندی تاریخ و زمان با استفاده از این متغیر تعیین می‌شود. کلاس DateTime در PHP کاراکترهای مختلفی را برای تعیین قالب‌بندی تاریخ و زمان ارائه می‌دهد. در ادامه، به منظور آشنایی بیشتر با این کاراکترها برخی از آن‌ها معرفی شده‌اند.

  • Y – نشانگر سال با استفاده از ۴ رقم (مثال: 2024)
  • y – نشانگر سال با استفاده از ۲ رقم (مثال: 24)
  • F – نام ماه میلادی به صورت کامل (مثال: September)
  • M – نام ماه میلادی به صورت مختصر (مثال: Sep)
  • m – نشان دهنده ماه به صورت عددی با ۲ رقم (مثال: 09)
  • n – نشانگر ماه به صورت عددی بدون صفر (مثال: 9)
  • d – نشانگر روز به صورت عددی با ۲ رقم (مثال: 08)
  • j – نشانگر روز به صورت عددی بدون صفر (مثال: 8)
  • D – نشان دهنده روز هفته به صورت خلاصه (مثال: Mon)
  • l – نشان دهنده روز هفته به صورت کامل (مثال: Monday)
  • N – نشانگر روز هفته به صورت عددی (مثال: 1 برای دوشنبه و 7 برای یکشنبه)
  • w – نشانگر روز هفته به صورت عددی (مثال: 0 برای یکشنبه و 6 برای شنبه)
  • W – نشان دهنده چندمین هفته از سال به صورت عددی (مثال: 37)
  • z – نشان دهنده چندمین روز از سال به صورت عددی (مثال: بین 0 تا 365)
  • G – نشانگر ساعت با فرمت ۲۴ ساعته بدون صفر ابتدایی (مثال: 9 یا 21)
  • H – نشانگر ساعت با فرمت ۲۴ ساعته با صفر ابتدایی (مثال: 09 یا 21)
  • i – نشانگر دقیقه با صفرهای ابتدایی (مثال: 05)
  • s – نشانگر ثانیه با صفرهای ابتدایی (مثال: 07)
  • a – نشانگر قبل از ظهر و بعد از ظهر با حروف کوچک لاتین (مثال: am یا pm)
  • A – نشانگر قبل از ظهر و بعد از ظهر با حروف بزرگ لاتین (مثال: AM یا PM)
  • U – مُهر زمانی یونیکیس
  • S – اضافه کردن عبارات “th”، “rd”، “nd” و سایر موارد به انتهای تاریخ‌های عددی
  • r – در صورت منفی بودن تفاضل دو تاریخ علامت “-” و در صورت مثبت بودن خالی قرار می‌دهد.
  • R – در صورت منفی بودن تفاضل دو تاریخ علامت “-” و در صورت مثبت بودن علامت “+” را قرار می‌دهد.

با استفاده از این کاراکترها می‌توان با توجه به نیاز خود فرمت تاریخ را سفارشی‌سازی کرد. در ادامه چند مثال ساده از نمایش تاریخ و زمان با استفاده از تابع Date در PHP به همراه کاراکترهای ارائه شده در بالا آورده شده است.

چگونه تاریخ و زمان را در PHP نمایش دهیم؟

برای نمایش تاریخ و زمان فعلی در فرمت دلخواه از تابع Date باید استفاده کرد. با توجه به کاراکترهای قابل استفاده در تابع Date می‌توان تاریخ و زمان را در فرمت دلخواه نشان داد. قطعه کد زیر تاریخ و زمان فعلی را در فرمت مشخص شده نشان می‌دهد.

1$currentDate = date('Y-m-d H:i:s');
2echo $currentDate;

خروجی حاصل از اجرای قطعه کد بالا تاریخ و ساعت فعلی را برمی‌گرداند.

2024-06-02 08:23:29

در برنامه نویسی وب گاهی اوقات نیاز است تا تاریخ شمسی را به میلادی تبدیل کنیم. برای این منظور می‌توانید فیلم آموزش رایگان تبدیل تاریخ شمسی به میلادی در PHP فرادرس را مشاهده کنید که لینک آن در ادامه آورده شده است.

نمایش سال جاری در PHP

برای نمایش سال جاری در PHP به سادگی می‌توان از تابع Date به همراه کاراکتر متناظر با نمایش سال ( Y

 یا y

 ) استفاده کرد. قطعه کد زیر سال جاری را در خروجی چاپ می‌کند.

1$currentYear = date('Y');
2echo $currentYear;

خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود.

2024

نمایش روز هفته در PHP

برای نمایش روز هفته در PHP نیز می‌توان از کاراکترهای قالب‌بندی مربوط به آن یعنی ( D

 یا l

 ) استفاده کرد. قطعه کد زیر روز جاری هفته در PHP را به صورت کامل با حروف در خروجی چاپ می‌کند.

1$currentDayOfWeek = date('l');
2echo $currentDayOfWeek;

خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود.

Sunday

یادگیری زبان PHP با فرادرس

استفاده از دوره‌های آموزشی ویدیویی یک روش اثبات شده و عالی برای یادگیری برنامه نویسی PHP است. آموزش‌های ویدیویی باعث صرفه‌جویی در زمان و هزینه می‌شوند. علاوه بر این، مزیت دیگر آموزش‌های ویدیویی انعطاف‌پذیری بالای آن‌ها است، زیرا فرد هر زمان که آمادگی داشته باشد می‌تواند آموزش ببیند و در صورت نیاز یک آموزش را چندین مرتبه مشاهده کند. فرادرس به عنوان یکی از بزرگترین پلتفرم‌های آموزشی کشور، فیلم آموزشی متعددی را در حوزه برنامه نویسی PHP منتشر کرده است. به عنوان مثال، در مجموعه فیلم‌های آموزش برنامه نویسی PHP فرادرس آموزش‌های موضوعی و پروژه محور متعددی در دسترس شما قرار دارد.

مجموعه آموزش‌ برنامه نویسی پی اچ پی PHP فرادرس
برای مشاهده مجموعه فیلم‌های آموزش برنامه نویسی PHP در فرادرس، روی تصویر کلیک کنید.

برای شروع مسیر یادگیری برنامه نویسی PHP می‌توانید دوره آموزشی زیر را مشاهده کنید که لینک آن در ادامه آورده شده است.

در ادامه مسیر یادگیری خود نیز می‌توانید به سراغ آموزش‌های پروژه محور PHP موجود در این مجموعه بروید که تعدادی از آن‌ها در ادامه آورده شده است.

چند مثال عملی از پیاده‌سازی تابع Date در PHP

تابع Date در PHP ابزاری قدرتمند برای قالب‌بندی تاریخ و زمان است. توسعه دهندگان می‌توانند از این تابع در ترکیب با کلاس‌ها، عملگرها و سایر توابع PHP استفاده کنند تا عملکرد مورد نظر را پیاده‌سازی کنند. در ادامه این بخش چندین مثال کاربردی از پیاده‌سازی تابع Date در PHP آورده شده است.

الحاق تاریخ و زمان به سایر رشته‌ها

توسعه دهندگان می‌توانند با استفاده از عملگرهای PHP نظیر عملگر الحاق مقادیر تاریخ و زمان را با رشته‌ها و سایر متغیرها ترکیب کنند. مثال زیر نحوه انجام این کار را نشان می‌دهد.

1$today = date('Y-m-d'); // current year, month and day
2$message = 'The current date is: ' . $today;
3echo $message;

در مثال بالا قالب‌بندی تاریخ توسط تابع Date مشخص شده است و تاریخ فعلی در متغیر $today

 ذخیره شده است. سپس، مقدار متغیر $today

 با رشته‌ای دیگر الحاق شده و در متغیر $message

 ذخیره می‌شود. در نهایت، خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود.

The current date is: 2024-05-28

با اجرای قطعه کد بالا تاریخ فعلی نمایش داده می‌شود.

چگونه فرمت نمایش تاریخ در PHP را تغییر دهیم؟

برای تبدیل فرمت نمایش تاریخ در PHP ابتدا باید تاریخ مورد نظر را به timestamp تبدیل کرد و مجدداً با استفاده از کاراکترهای موجود و تابع Date فرمت دلخواه خود را ساخت. تابع Strtotime()

 یکی از توابع PHP است که رشته‌ای از تاریخ و زمان را دریافت می‌کند و معادل timestamp آن را برمی‌گرداند. در نهایت می‌توان مقدار بازگشتی از این تابع را با استفاده از تابع Date قالب‌بندی کرد. پیش‌تر در مطلب زیر از مجله فرادرس فهرستی از ۴۰ تابع مهم در زبان PHP ارائه شده است.

قطعه کد زیر نحوه تغییر فرمت نمایش تاریخ در PHP را نشان می‌دهد.

1$dateString = '2023-08-19';
2$timestamp = strtotime($dateString);
3$formattedDate = date('l, F j, Y', $timestamp);
4echo $formattedDate;

خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود.

Saturday, August 19, 2023

کلاس DateTime در PHP

کلاس DateTime در PHP روشی شی‌گرا برای کار با مقادیر تاریخ و زمان را ارائه می‌دهد و عملکردی بسیار مشابه با تابع date()

 دارد. قطعه کد زیر مثالی از کاربرد این کلاس را نشان می‌دهد.

1$now = new DateTime();
2$formattedDate = $now->format('l, F j, Y H:i:s');
3echo $formattedDate;

در مثال بالا ابتدا یک شی از کلاس DateTime با نام $now

 ایجاد شده است که تاریخ و زمان فعلی را نشان می‌دهد. سپس، از متد format()

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

Tuesday, May 28, 2024 15:49:21

تجزیه تاریخ‌های نسبی

در زبان برنامه نویسی PHP این امکان فراهم است تا به سادگی تاریخ‌های نسبی همچون فردا، هفته آینده، دوشنبه بعد و سایر موارد را با استفاده از تابع strtotime()

 یا متد format()

 از کلاس DateTime تجزیه کرد. در ادامه چندین مثال در این خصوص ارائه شده است.

1$tommorow = 'tomorrow';
2$date = new DateTime($tommorow);
3echo "Tommorow's date is: " .  $date->format('Y-m-d, l') . "<br>";
4
5$nextWeek = strtotime('next week');
6echo "Exactly a week from now is: " .  date('Y-m-d, l', $nextWeek) . "<br>";
7
8$nextMonth = strtotime('next month');
9echo "Next month is: " .  date('F Y', $nextMonth). "<br>"; 
10
11$next2Month = strtotime('next 2 months');
12echo "Any unsupported string will return: " . date('F Y', $next2Month). "<br>"; 
13
14$secondMondayOfNextMonth = strtotime('second monday of next month');
15echo "Second Monday of next month is: " .  date('l Y-m-d', $secondMondayOfNextMonth). "<br>";
16
17$lastDayNextMonth = strtotime('last day of next month');
18echo "Last day of next month is: " .  date('l Y-m-d', $lastDayNextMonth). "<br>";
19
20$twoWeeksAgo = strtotime('2 weeks ago');
21echo "Exactly 2 weeks from now is: " .  date('l Y-m-d', $twoWeeksAgo). "<br>"; 
22
23$nextMonday = strtotime('next monday');
24echo "Next Monday's date is: " .  date('l Y-m-d', $nextMonday). "<br>";
25
26$nextFriday = strtotime('next friday');
27echo "Next Friday's date is: " .  date('l Y-m-d', $nextFriday). "<br>";
28
29$twoDaysFromNow = strtotime('2 days');
30echo "Exactly 2 days from now is " .  date('l Y-m-d H:i:s', $twoDaysFromNow). "<br>";

در قطعه کد بالا از تابع strtotime

 برای تبدیل رشته‌های ورودی به شی از نوع Date استفاده شده است. خروجی حاصل از اجرای کد بالا با توجه به زمان اجرا نتیجه متفاوتی خواهد شد که در ادامه خروجی حاصل از اجرای این قطعه کد آورده شده است.

Tomorrow’s date is: 2023-09-13, Wednesday
Exactly a week from now is: 2023-09-18, Monday
Next month is: October 2023
Any unsupported string will return: January 1970
Second Monday of next month is: Monday 2023-10-09
Last day of next month is: Tuesday 2023-10-31
Exactly 2 weeks from now is: Tuesday 2023-08-29
Next Monday's date is: Monday 2023-09-18
Next Friday's date is: Friday 2023-09-15
Exactly 2 days from now is Thursday 2023-09-14 15:46:59

قالب‌بندی timestamps در PHP

به لطف وجود متد format()

 امکان تبدیل timestamp به رشته‌های خواندنی در PHP وجود دارد. قطعه کد زیر نحوه تبدیل timestamps به تاریخ را نشان می‌دهد.

1$timestamp = 1694531229;
2$date = new DateTime('@' . $timestamp);
3echo $date->format('Y-m-d H:i:s');

در مثال بالا متغیر $timestamp

 دارای مقدار عددی از نوع timestamp است که با فراخوانی متد format()

 و تعیین قالب‌بندی مورد نظر رشته متناظر با آن تولید خواهد شد. خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود.

2023-09-12 15:07:09

انجام عملیات ریاضی بر روی تاریخ در PHP

گاهی اوقات با توجه به نیاز پروژه لازم است تا عملیات ریاضی بر روی تاریخ‌ها انجام شود. برای این منظور ممکن است لازم باشد تا تاریخ‌های مختلف را با یکدیگر جمع یا تفریق کنیم. در ادامه این بخش نحوه جمع یا تفریق کردن تاریخ‌ها در PHP به همراه مثال آورده شده است.

جمع کردن تاریخ ها در PHP

در زبان برنامه نویسی PHP برای اضافه کردن به تاریخ یا جمع کردن دو تاریخ با یکدیگر می‌توان از تابع add

 و کلاس DateInterval

 استفاده کرد. در ادامه مثالی در این خصوص ارائه شده است.

1$date = new DateTime('2023-09-12');
2$date->add(new DateInterval('P5D'));
3echo $date->format('Y-m-d');

در مثال بالا متغیر $date

 از نوع رشته تعریف شده است که تاریخ 2023-09-12

 را در خود نگه‌داری می‌کند. برای اضافه کردن ۵ روز به این تاریخ از متد add

 به همراه کلاس DateInterval

 استفاده شده است. در واقع، عبارت P5D

 نشان دهنده ۵ روز است. خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود.

2023-09-17

مثال‌های زیر نحوه اضافه کردن هفته، ماه و سال به تاریخ‌ مورد نظر را نشان می‌دهد.

1$twoWeeks = new DateTime('2023-09-12');
2$twoWeeks->add(new DateInterval('P2W')); 
3echo "Given date plus two weeks = " . $twoWeeks->format('l, Y-m-d'); 
4
5$threeMonths = new DateTime('2023-09-12');
6$threeMonths->add(new DateInterval('P3M'));
7echo "<br> Given date plus 3 months = " . $threeMonths->format('l, Y-m-d');
8
9$fourYear = new DateTime('2023-09-12');
10$fourYear->add(new DateInterval('P4Y'));
11echo "<br> Given date plus 4 years = " . $fourYear->format('l, Y-m-d');

در مثال بالا عبارت P2W

 نشان دهنده ۲ هفته، عبارت P3M

 نشان دهنده ۳ ماه و عبارت P4Y

 نشان دهنده ۴ سال هستند که با استفاده از متد add

 و کلاس DateInterval

 به تاریخ مورد نظر اضافه شده‌اند. خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود.

Given date plus 2 weeks = Tuesday, 2023-09-26
Given date plus 3 months = Tuesday, 2023-12-12
Given date plus 4 years = Sunday, 2027-09-12

جمع کردن تاریخ ها در PHP با تابع modify

برای اضافه کردن مقادیر به تاریخ‌ها در PHP علاوه بر روش فوق می‌توان از تابع modify نیز استفاده کرد. با استفاده از تابع modify در PHP به سادگی می‌توان مقادیر مورد نظر خود را به تاریخ اضافه کرد.

برنامه نویس نشسته پشت لپ تاپ در حال انجام محاسبات ریاضی با تابع Date در PHP

در ادامه چندین مثال از نحوه جمع کردن تاریخ‌ها در PHP با استفاده از تابع modify ارائه شده است.

1$twoWeeks = new DateTime('2023-09-12');
2$twoWeeks->modify('+2 weeks'); 
3echo "Given date plus two weeks = " . $twoWeeks->format('l, Y-m-d'); 
4
5$threeMonths = new DateTime('2023-09-12');
6$threeMonths->modify('+3 months');
7echo "<br> Given date plus 3 months = " . $threeMonths->format('l, Y-m-d');
8
9$fourYear = new DateTime('2023-09-12');
10$fourYear->modify('+4 years');
11echo "<br> Given date plus 4 years = " . $fourYear->format('l, Y-m-d');

در قطعه کد ارائه شده در بالا عبارت +2 weeks

 نشان دهنده افزایش به میزان ۲ هفته، عبارت +3 months

 نشان دهنده افزایش به میزان ۳ ماه و عبارت +4 years

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

Given date plus two weeks = Tuesday, 2023-09-26
Given date plus 3 months = Tuesday, 2023-12-12
Given date plus 4 years = Sunday, 2027-09-12

با توجه به خروجی ارائه شده در بالا به ترتیب به میزان ۲ هفته، ۳ ماه و ۴ سال به تاریخ 2023-09-12

 اضافه شده است.

تفاضل تاریخ ها در PHP

برای محاسبه اختلاف بین دو تاریخ در PHP یا کم کردن دو تاریخ از یکدیگر می‌توان از تابع sub

 همراه با کلاس DateInterval

 موجود در PHP استفاده کرد. در ادامه چندین مثال از نحوه محاسبه تفاضل بین دو تاریخ ارائه شده است.

1$oneDay = new DateTime('2023-09-12');
2$oneDay->sub(new DateInterval('P1D')); 
3echo "Given date minus one day = " . $oneDay->format('l, Y-m-d'); 
4
5$twoWeeks = new DateTime('2023-09-12');
6$twoWeeks->sub(new DateInterval('P2W')); 
7echo "<br> Given date minus 2 weeks = " . $twoWeeks->format('l, Y-m-d'); 
8
9$threeMonths = new DateTime('2023-09-12');
10$threeMonths->sub(new DateInterval('P3M'));
11echo "<br> Given date minus 3 months = " . $threeMonths->format('l, Y-m-d');
12
13$fourYear = new DateTime('2023-09-12');
14$fourYear->sub(new DateInterval('P4Y'));
15echo "<br> Given date minus 4 years = " . $fourYear->format('l, Y-m-d');

در مثال بالا عبارت‌ P1D

 نشان دهنده ۱ روز، عبارت P2W

 نشان دهنده ۲ هفته، عبارت P3M

 نشان دهنده ۳ ماه و عبارت P4Y

 نشان دهنده ۴ سال هستند که با استفاده از تابع sub

 از تاریخ 2023-09-12

 کم شده‌اند. خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود.

Given date minus 1 day = Monday, 2023-09-11
Given date minus 2 weeks = Tuesday, 2023-08-29
Given date minus 3 months = Monday, 2023-06-12
Given date minus 4 years = Thursday, 2019-09-12

محاسبه تفاضل تاریخ ها در PHP با تابع modify

علاوه بر روش ارائه شده در بالا یعنی استفاده از تابع sub

 برای محاسبه تفاضل بین دو تاریخ در PHP می‌توان از تابع modify نیز استفاده کرد. مثال‌های زیر نحوه استفاده از تابع modify در PHP به منظور محاسبه تفاضل بین دو تاریخ را نشان می‌دهد.

1$oneDay = new DateTime('2023-09-12');
2$oneDay->modify('-1 day'); 
3echo "Given date minus one day = " . $oneDay->format('l, Y-m-d'); 
4
5$twoWeeks = new DateTime('2023-09-12');
6$twoWeeks->modify('-2 weeks'); 
7echo "<br> Given date minus 2 weeks = " . $twoWeeks->format('l, Y-m-d'); 
8
9$threeMonths = new DateTime('2023-09-12');
10$threeMonths->modify('-3 months');
11echo "<br> Given date minus 3 months = " . $threeMonths->format('l, Y-m-d');
12
13$fourYear = new DateTime('2023-09-12');
14$fourYear->modify('-4 years');
15echo "<br> Given date minus 4 years = " . $fourYear->format('l, Y-m-d');

خروجی قطعه کد بالا تفاوتی با کدهای ارائه شده در بخش قبلی ندارد. در ادامه خروجی حاصل از اجرای قطعه کد بالا آورده شده است.

Given date minus one day = Monday, 2023-09-11
Given date minus 2 weeks = Tuesday, 2023-08-29
Given date minus 3 months = Monday, 2023-06-12
Given date minus 4 years = Thursday, 2019-09-12

بعد از آشنایی با قالب‌بندی، تجزیه و انجام محاسبات ریاضی بر روی تاریخ‌ها در ادامه نوشته تابع Date در PHP با نحوه مدیریت زمان آشنا خواهید شد.

انجام عملیات ریاضی بر روی زمان در PHP

به لطف وجود کلاس DateTime در PHP و متدهای موجود در آن می‌توان عملیات ریاضی مختلفی را بر روی زمان‌ها انجام داد. در ادامه روش‌های موجود برای افزودن یا کاستن از یک زمان خاص در PHP ارائه شده است.

برنامه نویس در حالی که هودی پوشیده است در حال کدنویسی است

اضافه کردن به زمان در PHP

انجام عملیات ریاضی بر روی زمان در PHP امری بسیار رایج است و توسعه دهندگان گاهی اوقات نیاز دارند تا مقدار مشخصی را به زمان اضافه کنند. در ادامه این بخش چندین مثال از نحوه اضافه کردن ثانیه، ساعت و دقیقه به زمان در PHP آورده شده است.

1$addSeconds = new DateTime('09:30:00');
2$addSeconds->add(new DateInterval('PT30S'));
3echo "Given time plus 30 seconds = ". $addSeconds->format('l, H:i:sa');
4
5$addMin = new DateTime('22:30:00');
6$addMin->add(new DateInterval('PT50M'));
7echo "<br> Given time plus 50 minutes = ". $addMin->format('l, H:i:sa');
8
9$addHours = new DateTime('06:30:00');
10$addHours->add(new DateInterval('PT2H'));
11echo "<br> Given time plus 2 hours = ". $addHours->format('l, H:i:sa');

همانند بخش قبلی برای اضافه کردن مقداری مشخص به زمان از تابع add

 به همراه کلاس DateInterval

 استفاده شده است. در مثال بالا قرار دادن عبارت PT30S

 نشان دهنده ۳۰ ثانیه، عبارت PT50M

 نشان دهنده ۵۰ دقیقه و عبارت PT2H

 نشان دهنده ۲ ساعت خواهد بود که با استفاده از تابع add

 این مقادیر به زمان مشخص شده اضافه خواهند شد. خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود.

Given time plus 30 seconds = Saturday, 09:30:30am
Given time plus 50 minutes = Saturday, 23:20:00pm
Given time plus 2 hours = Saturday, 08:30:00am

اضافه کردن به زمان در PHP با استفاده از تابع modify

همانند اضافه کردن مقدار به تاریخ برای افزودن مقدار مشخصی به زمان نیز امکان استفاده از تابع modify در PHP وجود دارد. قطعه کد زیر مثال بالا را با استفاده از تابع modify در PHP پیاده‌سازی می‌کند.

1$addSeconds = new DateTime('09:30:00');
2$addSeconds->modify('+30 seconds');
3echo "Given time plus 30 seconds = ". $addSeconds->format('l, H:i:sa');
4
5$addMin = new DateTime('22:30:00');
6$addMin->modify('+50 minutes    ');
7echo "<br> Given time plus 50 minutes = ". $addMin->format('l, H:i:sa');
8
9$addHours = new DateTime('06:30:00');
10$addHours->modify('+2 hours');
11echo "<br> Given time plus 2 hours = ". $addHours->format('l, H:i:sa');

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

کم کردن از زمان در PHP

نحوه کم کردن از زمان در PHP مشابه افزودن به زمان است با این تفاوت که برای کاستن از زمان باید از تابع sub

 استفاده کرد. مثال زیر نحوه کم کردن از زمان در PHP با استفاده از تابع sub

 را نشان می‌دهد.

1$minusSeconds = new DateTime('09:30:00');
2$minusSeconds->sub(new DateInterval('PT90S'));
3echo "Given time minus 90 seconds = ". $minusSeconds->format('l, H:i:sa');
4
5$minusMin = new DateTime('22:30:00');
6$minusMin->sub(new DateInterval('PT40M'));
7echo "<br> Given time minus 40 minutes = ". $minusMin->format('l, H:i:sa');
8
9$minusHours = new DateTime('06:30:00');
10$minusHours->sub(new DateInterval('PT15H'));
11echo "<br> Given time minus 15 hours = ". $minusHours->format('l, H:i:sa');

در قطعه کد بالا عبارت PT90S

 نشان دهنده ۹۰ ثانیه، عبارت PT40M

 نشان دهنده ۴۰ دقیقه و عبارت PT15H

 نشان دهنده ۱۵ ساعت است. با استفاده از تابع sub

 این مقادیر از زمان‌های مشخص شده کاسته شده است. خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود.

Given time minus 90 seconds = Wednesday, 09:28:30am
Given time minus 40 minutes = Wednesday, 21:50:00pm
Given time minus 15 hours = Tuesday, 15:30:00pm

کم کردن از زمان در PHP با استفاده از تابع modify

علاوه بر روش ارائه شده در بالا امکان کاستن از زمان با تابع modify در PHP نیز وجود دارد. قطعه کد زیر پیاده‌سازی مثال بالا با استفاده از این تابع را نشان می‌دهد.

1$minusSeconds = new DateTime('09:30:00');
2$minusSeconds->modify('-90 seconds');
3echo "Given time minus 90 seconds = ". $minusSeconds->format('l, H:i:sa');
4
5$minusMin = new DateTime('22:30:00');
6$minusMin->modify('-40 minutes');
7echo "<br> Given time minus 40 minutes = ". $minusMin->format('l, H:i:sa');
8
9$minusHours = new DateTime('06:30:00');
10$minusHours->modify('-15 hours');
11echo "<br> Given time minus 15 hours = ". $minusHours->format('l, H:i:sa');

خروجی حاصل از اجرای قطعه کد بالا نیز مشابه بخش قبلی خواهد بود.

کار با فواصل زمانی در PHP

امکان محاسبه فاصله زمانی موجود بین دو زمان در زبان PHP با استفاده از تابع diff

 وجود دارد. با کمک این تابع می‌توان ثانیه‌ها، دقیقه‌ها و ساعت‌های بین دو زمان مختلف را محاسبه کرد. قطعه کد زیر نحوه محاسبه فواصل زمانی در PHP را نشان می‌دهد.

1$time1 = new DateTime('06:30:00');
2$time2 = new DateTime('10:15:45');
3$interval = $time1->diff($time2);
4$seconds = $interval->h * 3600 + $interval->i * 60 + $interval->s . " seconds <br>";
5$minutes = $interval->h * 60 + $interval->i . " minutes <br>";
6$hours = $interval->h . " hours <br>";
7echo $seconds;
8echo $minutes; 
9echo $hours;

خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود.

13545 seconds
225 minutes
3 hours

مدیریت منطقه زمانی در PHP

زبان PHP با ارائه کلاسی جداگانه تحت عنوان DateTimeZone به توسعه دهندگان امکان می‌دهد تا به آسانی با مناطق مختلف زمانی در برنامه خود کار کنند. به عنوان مثال، برای نمایش زمان در مناطق زمانی مختلف به صورت زیر می‌توان از کلاس DateTimeZone استفاده کرد.

1$newyork = new DateTime('now', new DateTimeZone('America/New_York'));
2$tehran = new DateTime('now', new DateTimeZone('Asia/Tehran'));
3
4echo "Current time in New York: " . $newyork->format('l, Y-m-d H:i:s') . "<br>";
5echo "Current time in Tehran: " . $tehran->format('l, Y-m-d H:i:s') . "<br>";

در قطعه کد ارائه شده در بالا منطقه زمانی برای شهرهای نیویورک و تهران با استفاده از کلاس DateTimeZone

 مشخص شده است. خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود.

Current time in New York: Saturday, 2024-06-01 10:04:27
Current time in Tehran: Saturday, 2024-06-01 17:34:27

خروجی ارائه شده در قطعه کد بالا به زمان اجرای کد بستگی دارد. در نتیجه، با اجرای این کد در زمان‌های مختلف نتیجه متفاوتی را شاهد خواهید بود.

برنامه نویس نشسته پشت لپ تاپش در حال کار با منطقه های زمانی در PHP

چگونه اختلاف ساعت بین دو منطقه زمانی را در PHP محاسبه کنیم؟

یکی از کاربردهای بسیار رایج در زمینه کار با مناطق زمانی محاسبه اختلاف ساعت موجود بین دو نقطه جغرافیایی است. به عنوان مثال، گاهی اوقات نیاز است تا اختلاف ساعت بین دو نقطه مختلف جغرافیایی را در برنامه محاسبه کنیم. برای این منظور می‌توان از تابع Date در PHP در ترکیب با کلاس DateTimeZone

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

1$tehran = new DateTime('14:30:00', new DateTimeZone('Asia/Tehran'));
2$newyork = new DateTime('14:30:00', new DateTimeZone('America/New_York'));
3
4$diff = $tehran->diff($newyork);
5
6echo $diff->format('The difference between the given times is %R%H hours %I minutes');

در مثال بالا ساعت فعلی شهر تهران با توجه به منطقه جغرافیایی آن محاسبه و در متغیر $tehran

 ذخیره می‌شود. همچنین، متغیر $newyork

 نیز ساعت فعلی شهر نیویورک را در خود ذخیره می‌کند. برای محاسبه اختلاف ساعت بین این دو شهر کافی است تا از تابع diff

 در PHP استفاده کنیم.

The difference between the given times is +07 hours 30 minutes

خروجی ارائه شده در بالا اختلاف ساعت بین تهران و نیویورک را نشان می‌دهد که برابر +07:30

 است.

مشاهده لیست کامل مناطق زمانی پشتیبانی شده در PHP

زبان برنامه نویسی PHP فهرست کاملی از مناطق زمانی را پوشش می‌دهد و توسعه دهندگان می‌توانند از این مناطق زمانی در برنامه خود استفاده کنند. امکان دسترسی به فهرست کامل مناطق زمانی پشتیبانی شده در PHP از طریق کلاس DateTimeZone

 وجود دارد. به عنوان مثال قطعه کد زیر فهرست کامل مناطق زمانی پشتیبانی شده در PHP را نشان می‌دهد.

1$no = 1;
2$timeZones = DateTimeZone::listIdentifiers();
3foreach ($timeZones as $tz) {
4    echo $no++ . ". ";  
5    echo $tz . "<br>";
6}

خروجی حاصل از اجرای قطعه کد بالا تمام ۴۱۹ منطقه زمانی پشتیبانی شده توسط PHP را نشان می‌دهد. به دلیل طولانی بودن فهرست مناطق زمانی پشتیبانی شده در PHP خروجی حاصل از اجرای این قطعه کد را در این بخش قرار ندادیم. شما می‌توانید با اجرای این قطعه کد فهرست کامل مناطق زمانی پشتیبانی شده توسط PHP را مشاهده کنید.

انجام چند عملیات ساده بر روی تاریخ و زمان در PHP

توسعه دهندگان با استفاده از تابع Date در PHP و امکانات موجود در آن می‌توانند تاریخ و زمان را قالب‌بندی و دستکاری کنند. در این بخش چندین مثال کاربردی از ترکیب تابع Date و سایر کلاس‌های موجود در PHP آورده شده است. اگر قصد یادگیری مفاهیم موجود در زبان PHP به صورت عملی را دارید پیشنهاد می‌شود فیلم آموزش پروژه محور طراحی سایت فروشگاهی با PHP فرادرس را که لینک آن در ادامه آورده شده است را مشاهده کنید.

چگونه روز، ماه و سال را به صورت همزمان به تاریخ در PHP اضافه کنیم؟

امکان اضافه کردن همزمان روز، ماه و سال به یک تاریخ خاص در PHP به دو روش وجود دارد. روش اول استفاده از تابع modify است که یکی از متدهای موجود در کلاس DateTime

 است. مثال زیر نحوه استفاده از این تابع برای افزودن روز، ماه و سال به صورت همزمان به یک تاریخ خاص را نشان می‌دهد.

1$date = new DateTime('now');
2$date->modify('+4 years +1 day +2 week +3 month');
3echo $date->format('Y-m-d') . "<br> <br>";

در مثال بالا ۴ سال، ۳ ماه، ۲ هفته و ۱ روز به تاریخ فعلی سیستم اضافه شده است. خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود.

2028-09-16

باید به این نکته نیز توجه کرد که خروجی قطعه کد بالا به زمان اجرای کد بستگی دارد. علاوه بر روش ارائه شده در بالا می‌توان از کلاس DateTimeInterval

 نیز برای اضافه کردن همزمان روز، ماه و سال به یک تاریخ خاص در PHP استفاده کرد. قطعه کد زیر پیاده‌سازی مثال بالا را با استفاده از کلاس DateTimeInterval

 را نشان می‌دهد.

1$date = new DateTime('now');
2$date->add(new DateInterval('P4Y3M2W1D')); 
3echo $date->format('Y-m-d') . "<br> <br>";

در مثال بالا عبارت P4Y3M2W1D

 نشان دهنده ۴ سال، ۳ ماه، ۲ هفته و ۱ روز است که با استفاده از تابع add

 این مقدار به تاریخ فعلی سیستم اضافه شده است.

برنامه نویس پشت میزش در حال کار با لپ تاپش در حالی که به متدهای مختلف تابع Date در PHP فکر می کند.

چگونه ساعت، دقیقه و ثانیه را به صورت همزمان از یک زمان مشخص در PHP کم کنیم؟

امکان کم کردن همزمان روز، ماه و سال از یک تاریخ مشخص در PHP با استفاده از کلاس DateTimeInterval

 و تابع sub

 وجود دارد. قطعه کد زیر نحوه کم کردن همزمان روز، ماه و سال از یک تاریخ خاص در PHP را نشان می‌دهد.

1$date = new DateTime('12:00:00');
2$date->sub(new DateInterval('PT7H30M15S')); 
3echo $date->format('H:i:s') . "<br> <br>";

در مثال بالا ۷ ساعت، ۳۰ دقیقه و ۱۵ ثانیه از زمان مشخص شده یعنی 12:00:00

 کم شده است. خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود.

04:29:45

علاوه بر روش بالا با استفاده از تابع modify نیز می‌توان به صورت همزمان ساعت، دقیقه و ثانیه را از زمانی مشخص کم کرد. قطعه کد زیر پیاده‌سازی مثال بالا با استفاده از تابع modify را نشان می‌دهد.

1$date = new DateTime('12:00:00');
2$date->modify('-7 hours -30 minutes -15 seconds'); 
3echo $date->format('H:i:s') . "<br> <br>";

در مثال بالا از علامت منفی استفاده شده است که کم شدن زمان را نشان می‌دهد.

قالب بندی زمان های نسبی در PHP

با استفاده از تابع Date در PHP و متدهای موجود در کلاس DateTime

 می‌توان زمان‌های نسبی را قالب‌بندی کرد. قطعه کد زیر مثالی در این خصوص را نشان می‌دهد.

1$date = new DateTime('2023-05-13 14:00:00');
2$fewDaysAgo = new DateTime('2023-05-09 11:00:00');
3
4$diff = date_diff($fewDaysAgo, $date);
5echo $diff->format('%R%a days %h hours ago');

خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود.

+4 days 3 hours ago

محاسبه زمان اجرای کد در PHP

با استفاده از تابع hrtime

 در PHP می‌توان زمان لازم برای اجرای یک بلوک از کد را محاسبه کرد. در مثال زیر این مسئله نشان داده شده است.

1$start_time = hrtime(true);
2
3for ($i = 0; $i < 1000000; $i++) {
4
5}
6
7$end_time = hrtime(true);
8
9$elapsed_time = $end_time - $start_time;
10
11$elapsed_time_seconds = $elapsed_time / 1e9;
12
13echo "Elapsed time: {$elapsed_time_seconds} seconds";

در مثال بالا زمان شروع با استفاده از تابع hrtime

 ثبت شده است. سپس، یک حلقه خالی تعریف شده است که به ۱۰۰۰۰۰ مرتبه اجرا می‌شود و زمان پایان را ثبت می‌کند. در نهایت زمان سپری شده برحسب نانو ثانیه محاسبه شده و بعد از تبدیل به ثانیه در خروجی چاپ می‌شود. خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود.

Elapsed time: 0.0100829 seconds

جمع‌بندی

تابع Date در PHP ابزاری بسیار قدرتمند برای کار با تاریخ و زمان است. این تابع به توسعه دهندگان امکان می‌دهد تا تاریخ‌ها را به روش‌های مختف قالب‌بندی کنند و عملیات مورد نظر خود را نیز بر روی تاریخ‌ها انجام دهند. تابع Date با ارائه طیف گسترده‌ای از کاراکترهای قالب به توسعه دهندگان امکان می‌دهد تا خروجی را مطابق با نیاز خود سفارشی‌سازی کنند. بر همین اساس در این مطلب از مجله فرادرس تابع Date و کاربردهای آن به همراه مثال عملی مورد بررسی قرار گرفت. دنیای برنامه نویسی PHP پر از مفاهیم و بخش‌های مختلفی است که برای تسلط به تمام جنبه‌های موجود در آن می‌توانید از مجموعه آموزش‌های برنامه نویسی PHP فرادرس استفاده کنید که لینک آن در ادامه آورده شده است.

در این مطلب سعی شد تا کاربردهای عملی تابع Date در برنامه نویسی نظیر محاسبه اختلاف بین دو تاریخ، اضافه کردن یا کم کردن مقدار مشخصی از یک تاریخ خاص، مدیریت مناطق زمانی مختلف و انجام عملیات بر روی تاریخ و زمان همراه با مثال مورد بررسی قرار گیرد.

 

source

توسط expressjs