آموزش تاریخ و زمان در PHP

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

اول از همه خوب است بدانیم زمان در سیستم‌های کامپیوتری چگونه نگهداری می‌شود. در سیستم‌های Unix مقدار ثانیه گذشته شده از تاریخ یک ژانویه 1970 میلادی به‌عنوان زمان شناخته می‌شود.

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

زمان در PHP

برای گرفتن timestamp در PHP از تابع time() استفاده می‌کنیم. این تابع هیچ آرگومان ورودی ندارد و یک عدد را به عنوان خروجی به ما می‌دهد. این عدد همان ثانیه‌های گذشته از لحظه مبدأ زمانی است.

<?php
  echo time();  // 1643827251
?>

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

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

آرایه زمان و تاریخ PHP

تابع getdate() یک آرگومان ورودی اختیاری از نوع زمان‌بندی یونیکس (Unix Timestamp) می‌گیرد و زمان و تاریخ معادل آن را برمی‌گرداند.

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

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

<?php
print_r( getdate() );   // == print_r( getdate(time()) )

/* output:
Array (
    [seconds] => 5
    [minutes] => 41
    [hours] => 19
    [mday] => 2
    [wday] => 3
    [mon] => 2
    [year] => 2022
    [yday] => 32
    [weekday] => Wednesday
    [month] => February
    [0] => 1643827265  ) */

اگر یک timestamp را به عنوان ورودی به این تابع بدهم، مقادیر خروجی بر اساس زمان موردنظرمان تولید می‌شود. برای مثال، به نمونه خروجی در تصویر زیر دقت کنید:

خروجی تابع getdate در PHP با timestamp
خروجی تابع getdate در PHP با timestamp

نمایش تاریخ در PHP

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

date( $format, $timestamp );
  • ورودی اول (format) ساختار نمایش زمان را مشخص می‌کند. این ورودی یک رشته از کاراکترهای مرتبط با زمان Unix است که در جلوتر از آن مثال‌هایی می‌بینیم.
  • اگر بخواهیم یک زمان خاص را نمایش دهیم، timestamp آن را به عنوان آرگومان دوم مشخص می‌کنیم.

اگر آرگومان دوم تعریف نشود، به‌طور پیشفرض زمان فعلی سیستم محاسبه و نمایش داده می‌شود.

در باکس زیر چند ساختار و نمونه از استفاده از تابع زمان و تاریخ در PHP نوشته‌ام:

<?php
echo date("y/m/d h:i:s a");  // 22/02/02 07:41:56 pm

echo date("jS F Y");         // 2nd February 2022

echo date("j M Y");          // 2 Feb 2022

echo date("H:i:s");          // 19:42:25

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

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

آموزش کار با فایل در PHP در ۴ مرحله

آموزش کار با فایل در PHP در ۴ مرحله

ایجاد زمان یونیکس از زمان خاص

تا الآن یاد گرفتیم چطور زمان یونیکس را به رشته متنی تبدیل کنیم. گاهی لازم است برعکس این کار را انجام دهیم؛ یعنی timestamp یک تاریخ و ساعت خاص را در PHP محاسبه کنیم.

تابع mktime() در PHP برای تبدیل زمان به زمان Unix استفاده می‌شود.

این تابع ۶ ورودی می‌گیرد و ساختار کلی آن شبیه به باکس کد زیر است:

mktime(hour, minute, second, month, day, year);

احتمالاً از اسم آرگومان‌های اول تا ششم متوجه می‌شود که به ترتیب برای ساعت، دقیقه، ثانیه، ماه، روز و سال هستند.

در فراخوانی تابع محاسبه زمان در زیر، یک ساعت خاص در روز 9 می 2018 را به تابع date() داده‌ام تا با فرمت موردنظرم نمایش دهد:

<?php
echo date( "Y-m-d H:i:s", mktime(19, 27, 45, 5, 9, 2018) );

// 2018-05-09 19:27:45

برای اجرای این خط، ابتدا timestamp زمان موردنظرمان ایجاد شده و چیزی شبیه به کد زیر اجرا می‌شود:

echo date( "Y-m-d H:i:s", 1525886865 );

به غیر از اولی (hour)، می‌توانیم بقیه را تعریف نکنیم؛ در اینصورت تاریخ امروز و دقیقه و ثانیه همین لحظه در محاسبه زمان PHP در نظر گرفته می‌شود.

آموزش اتصال و کار با دیتابیس در PHP

آموزش اتصال و کار با دیتابیس در PHP

یک روش رایج برای ذخیره‌سازی زمان و تاریخ در PHP و سایر زبان‌ها این است که timestamp موردنظر را نگهداری می‌کنند. از این پس هر زمان که نیاز شد، این عدد را (از دیتابیس) فراخوانی کرده و با تابع date() در فرمت دلخواه نمایش می‌دهند.

برای اینکه یک مرور کوتاه روی توابع بحث‌شده داشته باشیم، جدول زیر را به‌عنوان جمع‌بندی بررسی کنید:

تابعخروجی
time()timestamp فعلی سیستم
getdate()آرایه‌ای از تاریخ و ساعت
date()نمایش زمان در فرمت دلخواه
mktime()تبدیل زمان خاص به timestamp

پیشنهاد می‌کنم کمی بیشتر با تابع‌های تاریخ و زمان در PHP کار کنید. سعی کنید چند مثال برای خودتان زده و آن‌ها را پیاده‌سازی کنید تا بهتر در ذهنتان بمانند.

اگر سؤال یا تجربه‌ای دارید، بخش دیدگاه‌ها برای شماست تا نظراتتان را به ما و دوستانتان به اشتراک بگذارید. 🙂

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

این آموزش بخشی از یک آموزش جامع و قدم به قدم در سبز دانش است: دوره رایگان آموزش PHP