آموزش PHP - جلسه هجدهم: کار با تاریخ و ساعت و تاریخ هجری شمسی
تاریخ همیشه بخش مهمی زندگی روزمره را تشکیل میدهد و باعث میشود بتوانیم به انجام همه کارهای خود برسیم. توابع مربوط به ساعت و تاریخ در پیاچپی بسیار مهم هستند. نیاز به نمایش تاریخ و ساعت هم در مواقع ثبت اطلاعات و هم در مواقع نمایش دادن اطلاعات وجود دارد. پیاچپی ابزارهای بسیار قدرتمندی را به منظور استفاده از تاریخ و ساعت در اختیار توسعهدهندگان میگذارد.
دریافت زمان با ()time
تابع ()time تمام اطلاعات لازم برای لحظه حاضر از تاریخ و ساعت را در اختیار شما قرار خواهد داد. این تابع نیاز به هیچ آرگومان ورودی ندارد اما یک رشته متنی را خروجی میدهد.
رشته متنی که از این تابع برگردانده میشود تعداد ثانیههای سپری شده از نیمه شب ۱ ژانویه ۱۹۷۰ را به وقت GMT نشان میدهد. زمان حاضر به شکل UNIX نمایش مییابد که این یعنی تعداد ثانیههای گذشته شده از یک زمان مرجع.
برای نمایش خروجی این تابع ابتدا نرم افزار Xampp را اجرا کرده و سرورهای آپاچی و MySQL را فعال کنید. حال در پوشه htdocs یک پوشه به اسم time بسازید. در این پوشه فایلی به نام test.php ساخته و کد زیر را در آن قرار دهید.
echo time();?>
اجرای کد فوق از طریق آدرس http://127.0.0.1/time/index.php باعث ایجاد نتیجهای مثل عدد 1466669416 خواهد شد.
فهمیدن این عدد قطعا کار آسانی نیست. اما PHP ابزارهای بسیاری خوبی را برای تبدیل این عدد به فرمتهای قابل فهم و معمول تاریخ و زمان ارائه میدهد.
تابع ()getdate
تابع ()getdate میتواند timstamp (خروجی که از تابع ()time به دست میآید) را به طور اختیاری به عنوان ورودی دریافت کند. خروجی این تابع یک آرایه از اطلاعات مربوط به تاریخ است. اگر شما ورودی این تابع را تعیین نکنید از میزان خروجی کنونی ()time استفاده میکند.
در جدول زیر میتوانید لیست المانهای آرایهای که از تابع getdate بدست میآید را مشاهده کنید.
به مثال زیر دقت کنید:
php $date_array = getdate(); foreach ( $date_array as $key => $val ){ print "$key = $val"; } $formated_date = "Today's date: "; $formated_date .= $date_array['mday'] . "/"; $formated_date .= $date_array['mon'] . "/"; $formated_date .= $date_array['year']; print $formated_date;?>
نتیجه اجرای کد فوق چیزی شبیه به زیر است:
seconds = 18
minutes = 10
hours = 8
mday = 23
wday = 4
mon = 6
year = 2016
yday = 174
weekday = Thursday
month = June
0 = 1466669418
Today's date: 23/6/2016
تبدیل تایماستامپ با تابع ()date
تابع ()date شکل فرمتبندی شدهای از تاریخ و زمان را نشان میدهد. شما میتوانید تعداد بسیار زیادی فرمت بر حسب خلاقیت یا نیاز خود با این تابع بدست آورید. کد استاندارد این تابع به شکل زیر است:
date(format,timestamp)
تابع ()date نیز میتواند تایماستامپ (timestamp) مورد نظرتان را به صورت اختیاری به عنوان ورودی دریافت کند و اگر این ورودی تعیین نشود، از زمان کنونی استفاده خواهد شد. در جدول زیر لیستی از فرمتهایی که میتوانید با این تابع استفاده کنید آورده شده است.
php print date("m/d/y G.i:s", time()); print "Today is "; print date("j of F Y, \a\\t g.i a", time());?>
خروجی کد بالا به شکل زیر خواهد بود:
06/23/16 8.10:17Today is 23 2016f June 2016, at 8.10 am
اما تمام آنچه گفته شد فقط برای تاریخهای میلادی بکار میروند و برای استفاده از تاریخ شمسی باید از یک کلاس خارجی استفاده کنید. اینکه کلاس خارجی چیست فعلا نباید مد نظر شما باشد. اگر به خاطر داشته باشید روش include کردن فایلها را در جلسات گذشته مرور کردیم. شما باید فایل مربوط به کلاس تاریخ شمسی را به فایل مورد نظر خود که قصد استفاده از تاریخ شمسی را در آن دارید inlcude کرده و سپس به جای تابع ()date از ()jdate استفاده کنید. تمامی عملکردهای تابع ()jdate دقیقا شبیه به تابع ()date است. ابتدا فایل jdf.php را از این لینک دانلود کنید و سپس فایل jdf.php را در کنار فایل مورد نظر خود به عنوان مثال در پوشه time که در پوشه htdocs ساخته بودید قرار دهید. سپس در فایلی که قصد استفاده از تاریخ هجری شمسی را در آن دارید فایل jdf.php را include کنید. به عنوان مثال به کد زیر دقت کنید:
include ("jdf.php");print jdate("j of F Y, \a\\t g.i a", time());?>
در کد بالا ما فقط date را به jdate تغییر دادیم. در این صورت نتیجه اجرای کد فوق چیزی شبیه به زیر خواهد بود:
۳ ۱۳۹۵ تابستان تیر ۱۳۹۵, at ۱.۵۴ ب.ظ
همانطور که میبینید فرمتی که برای نمایش تاریخ میلادی بود را بدون تغییر برای تاریخ هجری شمسی استفاده کردیم که زیاد جالب نیست. میتوان از فرمتی مثل زیر استفاده کرد. کد بالا را به شکل زیر تغییر دهید:
include ("jdf.php");print jdate("j F Y - h:s", time());?>
نتیجه کد بالا به شکل زیر خواهد بود:
۳ تیر ۱۳۹۵ - ۰۱:۲۸
قطعا فرمت بالا نسبت به فرمت قبلی برای کاربران فارسی زبان گویاتر است. لازم به ذکر است که در فایلی که در بالا لینک دانلود آن را قرار دادیم، راهنمای کامل تابع jdate نیز وجود دارد که از سایت رسمی سازنده آن منتشر شده و برای یادگیری عمیقتر این توابع jdf.php میتوانید به راهنمای موجود در فایل دانلود شده یا وبسایت http://jdf.scr.ir مراجعه کنید.
در جلسات بعدی با مباحث پیشرفتهتر و جزئیتر دیگری در پیاچپی آشنا خواهید شد. نظرات و سوالات خود را در مورد مباحث این جلسه مثل همیشه در بخش دیدگاهها با زومیت و سایر کاربران به اشتراک بگذارید.