آموزش تابع Date در PHP – به زبان ساده با مثال و کد

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

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

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

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

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

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

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

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

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

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

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

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

<?php
  echo time();
؟>

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

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

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

تابع Date در PHP به منظور نمایش زمان و تاریخ مورد استفاده قرار می‌گیرد. همان طور که پیش‌تر نیز عنوان شد این تابع یک پارامتر اجباری از نوع رشته‌ای با نام
 دریافت می‌کند که نحوه قالب‌بندی تاریخ و زمان با استفاده از این متغیر تعیین می‌شود. کلاس 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 می‌توان تاریخ و زمان را در فرمت دلخواه نشان داد. قطعه کد زیر تاریخ و زمان فعلی را در فرمت مشخص شده نشان می‌دهد.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

کلاس DateTime در PHP

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

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

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

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

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

$tommorow = 'tomorrow';
$date = new DateTime($tommorow);
echo "Tommorow's date is: " .  $date->format('Y-m-d, l') . "<br>";

$nextWeek = strtotime('next week');
echo "Exactly a week from now is: " .  date('Y-m-d, l', $nextWeek) . "<br>";

$nextMonth = strtotime('next month');
echo "Next month is: " .  date('F Y', $nextMonth). "<br>"; 

$next2Month = strtotime('next 2 months');
echo "Any unsupported string will return: " . date('F Y', $next2Month). "<br>"; 

$secondMondayOfNextMonth = strtotime('second monday of next month');
echo "Second Monday of next month is: " .  date('l Y-m-d', $secondMondayOfNextMonth). "<br>";

$lastDayNextMonth = strtotime('last day of next month');
echo "Last day of next month is: " .  date('l Y-m-d', $lastDayNextMonth). "<br>";

$twoWeeksAgo = strtotime('2 weeks ago');
echo "Exactly 2 weeks from now is: " .  date('l Y-m-d', $twoWeeksAgo). "<br>"; 

$nextMonday = strtotime('next monday');
echo "Next Monday's date is: " .  date('l Y-m-d', $nextMonday). "<br>";

$nextFriday = strtotime('next friday');
echo "Next Friday's date is: " .  date('l Y-m-d', $nextFriday). "<br>";

$twoDaysFromNow = strtotime('2 days');
echo "Exactly 2 days from now is " .  date('l Y-m-d H:i:s', $twoDaysFromNow). "<br>";

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

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

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

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

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

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

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

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

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

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

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

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

$twoWeeks = new DateTime('2023-09-12');
$twoWeeks->add(new DateInterval('P2W')); 
echo "Given date plus two weeks = " . $twoWeeks->format('l, Y-m-d'); 

$threeMonths = new DateTime('2023-09-12');
$threeMonths->add(new DateInterval('P3M'));
echo "<br> Given date plus 3 months = " . $threeMonths->format('l, Y-m-d');

$fourYear = new DateTime('2023-09-12');
$fourYear->add(new DateInterval('P4Y'));
echo "<br> Given date plus 4 years = " . $fourYear->format('l, Y-m-d');

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

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

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

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

$twoWeeks = new DateTime('2023-09-12');
$twoWeeks->modify('+2 weeks'); 
echo "Given date plus two weeks = " . $twoWeeks->format('l, Y-m-d'); 

$threeMonths = new DateTime('2023-09-12');
$threeMonths->modify('+3 months');
echo "<br> Given date plus 3 months = " . $threeMonths->format('l, Y-m-d');

$fourYear = new DateTime('2023-09-12');
$fourYear->modify('+4 years');
echo "<br> Given date plus 4 years = " . $fourYear->format('l, Y-m-d');

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

با توجه به خروجی ارائه شده در بالا به ترتیب به میزان ۲ هفته، ۳ ماه و ۴ سال به تاریخ
 اضافه شده است.

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

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

$oneDay = new DateTime('2023-09-12');
$oneDay->sub(new DateInterval('P1D')); 
echo "Given date minus one day = " . $oneDay->format('l, Y-m-d'); 

$twoWeeks = new DateTime('2023-09-12');
$twoWeeks->sub(new DateInterval('P2W')); 
echo "<br> Given date minus 2 weeks = " . $twoWeeks->format('l, Y-m-d'); 

$threeMonths = new DateTime('2023-09-12');
$threeMonths->sub(new DateInterval('P3M'));
echo "<br> Given date minus 3 months = " . $threeMonths->format('l, Y-m-d');

$fourYear = new DateTime('2023-09-12');
$fourYear->sub(new DateInterval('P4Y'));
echo "<br> Given date minus 4 years = " . $fourYear->format('l, Y-m-d');

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

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

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

$oneDay = new DateTime('2023-09-12');
$oneDay->modify('-1 day'); 
echo "Given date minus one day = " . $oneDay->format('l, Y-m-d'); 

$twoWeeks = new DateTime('2023-09-12');
$twoWeeks->modify('-2 weeks'); 
echo "<br> Given date minus 2 weeks = " . $twoWeeks->format('l, Y-m-d'); 

$threeMonths = new DateTime('2023-09-12');
$threeMonths->modify('-3 months');
echo "<br> Given date minus 3 months = " . $threeMonths->format('l, Y-m-d');

$fourYear = new DateTime('2023-09-12');
$fourYear->modify('-4 years');
echo "<br> Given date minus 4 years = " . $fourYear->format('l, Y-m-d');

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

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

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

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

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

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

$addSeconds = new DateTime('09:30:00');
$addSeconds->add(new DateInterval('PT30S'));
echo "Given time plus 30 seconds = ". $addSeconds->format('l, H:i:sa');

$addMin = new DateTime('22:30:00');
$addMin->add(new DateInterval('PT50M'));
echo "<br> Given time plus 50 minutes = ". $addMin->format('l, H:i:sa');

$addHours = new DateTime('06:30:00');
$addHours->add(new DateInterval('PT2H'));
echo "<br> Given time plus 2 hours = ". $addHours->format('l, H:i:sa');

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

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

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

$addSeconds = new DateTime('09:30:00');
$addSeconds->modify('+30 seconds');
echo "Given time plus 30 seconds = ". $addSeconds->format('l, H:i:sa');

$addMin = new DateTime('22:30:00');
$addMin->modify('+50 minutes    ');
echo "<br> Given time plus 50 minutes = ". $addMin->format('l, H:i:sa');

$addHours = new DateTime('06:30:00');
$addHours->modify('+2 hours');
echo "<br> Given time plus 2 hours = ". $addHours->format('l, H:i:sa');

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

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

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

$minusSeconds = new DateTime('09:30:00');
$minusSeconds->sub(new DateInterval('PT90S'));
echo "Given time minus 90 seconds = ". $minusSeconds->format('l, H:i:sa');

$minusMin = new DateTime('22:30:00');
$minusMin->sub(new DateInterval('PT40M'));
echo "<br> Given time minus 40 minutes = ". $minusMin->format('l, H:i:sa');

$minusHours = new DateTime('06:30:00');
$minusHours->sub(new DateInterval('PT15H'));
echo "<br> Given time minus 15 hours = ". $minusHours->format('l, H:i:sa');

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

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

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

$minusSeconds = new DateTime('09:30:00');
$minusSeconds->modify('-90 seconds');
echo "Given time minus 90 seconds = ". $minusSeconds->format('l, H:i:sa');

$minusMin = new DateTime('22:30:00');
$minusMin->modify('-40 minutes');
echo "<br> Given time minus 40 minutes = ". $minusMin->format('l, H:i:sa');

$minusHours = new DateTime('06:30:00');
$minusHours->modify('-15 hours');
echo "<br> Given time minus 15 hours = ". $minusHours->format('l, H:i:sa');

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

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

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

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

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

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

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

$newyork = new DateTime('now', new DateTimeZone('America/New_York'));
$tehran = new DateTime('now', new DateTimeZone('Asia/Tehran'));

echo "Current time in New York: " . $newyork->format('l, Y-m-d H:i:s') . "<br>";
echo "Current time in Tehran: " . $tehran->format('l, Y-m-d H:i:s') . "<br>";

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

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

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

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

$tehran = new DateTime('14:30:00', new DateTimeZone('Asia/Tehran'));
$newyork = new DateTime('14:30:00', new DateTimeZone('America/New_York'));

$diff = $tehran->diff($newyork);

echo $diff->format('The difference between the given times is %R%H hours %I minutes');

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

در مثال بالا ۷ ساعت، ۳۰ دقیقه و ۱۵ ثانیه از زمان مشخص شده یعنی
 کم شده است. خروجی حاصل از اجرای قطعه کد بالا به صورت زیر خواهد بود.

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

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

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

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

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

$date = new DateTime('2023-05-13 14:00:00');
$fewDaysAgo = new DateTime('2023-05-09 11:00:00');

$diff = date_diff($fewDaysAgo, $date);
echo $diff->format('%R%a days %h hours ago');

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

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

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

$start_time = hrtime(true);

for ($i = 0; $i < 1000000; $i++) {

}

$end_time = hrtime(true);

$elapsed_time = $end_time - $start_time;

$elapsed_time_seconds = $elapsed_time / 1e9;

echo "Elapsed time: {$elapsed_time_seconds} seconds";

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

جمع‌بندی

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

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

 

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


منبع

درباره ی ماکان نیوز

مطلب پیشنهادی

دانلود نرم افزار Bootstrap Studio Professional v6.7.2 طراحی وب سایت واکنش گرا

اگر شما هم جزو آن دسته از کاربرانی هستید که در حال کارکردن با طراحی …

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *