آموزش PHP : تاریخ و زمان
برای نمایش و استفاده از زمان و تاریخ با فرمت دلخواه در PHP از تابع date()
استفاده میکنیم. این تابع یک timestamp را به تاریخ و زمانی خوانا تر و قابل درک تر تبدیل میکند.
سینتکس تابع date()
سینتکس این تابع به شکل زیر است :
date(format,timestamp)
در اینجا پارامتر format الزامی بوده و مشخص کننده فرمت تایم استمپ مورد نظر ماست. همچنین ارائه مقدار timestamp اختیاری بوده و در صورت عدم ارائه این مقدار به صورت پیشفرض از تاریخ و زمان فعلی استفاده خواهد شد.
تعریف Timestamp : تایم استمپ دنباله ای از کارکترهاست که تاریخ و/یا زمان وقوع رویدادی را مشخص میکند.
دریافت تاریخ در PHP
پارامتر format در تابع date()
نحوه نمایش تاریخ (یا زمان) را مشخص میکند. در پایین به برخی از کارکترهای مرسوم جهت تعیین فرمت نمایش تاریخ اشاره کرده ایم :
- d – نشانگر روز ماه است (01 تا 31)
- m – نشانگر ماه است (01 تا 12)
- Y – نشانگر سال است (چهارقمی)
- l (حرف ‘L’ کوچک) – روز هفته را مشخص میکند
از کارکتر های دیگر مثل “/” یا “-” یا “.” میتوانید برای اعمال فرمت های اضافی دلخواه در بین کارکتر ها استفاده کنید. در نمونه کد پایین، نمایش تاریخ را به چهار شکل مختلف نشان داده ایم :
1 2 3 4 5 6 | <?php echo "امروز " . date("Y/m/d") . "<br>"; echo "امروز " . date("Y.m.d") . "<br>"; echo "امروز " . date("Y-m-d") . "<br>"; echo "امروز " . date("l"); ?> |
نمایش تاریخ کپی رایت به صورت اتوماتیک در PHP
از تابع date()
میتوانید جهت نمایش اتوماتیک سال فعلی در کپی رایت سایتتان استفاده کنید. مثلا :
1 | © 2010-<?php echo date("Y");?> |
دریافت زمان در PHP
در زیر به برخی از کارکتر های مرسوم جهت تعیین فرم زمان اشاره کرده ایم :
- H – نمایش زمان با فرمت 24 ساعته (00 تا 23)
- h – نمایش زمان به حالت 12 ساعته به همراه صفر اول (01 تا 12)
- i – نمایش دقیقه به همراه صفر اول (00 تا 59)
- s – نمایش ثانیه به همراه صفر اول (00 تا 59)
- a – نمایش am یا pm با حروف کوچک
در زیر نمونه ای از نمایش زمان با فرمت دلخواه را مشاهده میکنید :
1 2 3 | <?php echo "زمان فعلی " . date("h:i:sa"); ?> |
به این مسئله توجه داشته باشید که تابع date زمان / تاریخ فعلی سروری که سایتتان روی آن میزبانی میشود را بر میگرداند.
دریافت منطقه زمانی در PHP
اگر زمانی که از تابع date دریافت میکنید صحیح نیست این احتمال وجود دارد که محل میزبانی سرور شما در محلی متفاوت از منطقه زمانی محل سکونت شما باشد. در این حالت لازم است که زمان را با استفاده از منطقه زمانی صحیح، با توجه به منطقه فعلی خود اصلاح کنید. در مثال زیر پس از اعمال منطقه زمانی Asia/Tehran زمان را به نمایش گذاشته ایم :
1 2 3 4 | <?php date_default_timezone_set("Asia/Tehran"); echo "زمان فعلی " . date("h:i:sa"); ?> |
توجه داشته باشید که در بسیاری از سرور ها، منطقه زمانی پی اچ پی توسط مدیر سرور از پیش بر اساس محل سکونت شما تنظیم شده است. (مثلا میزبان ایرانی ممکن است منطقه زمانی پی اچ پی را بر اساس موقعیت ایران / تهران تنظیم کرده باشد) در این حالت جهت نمایش زمان صحیح نیازی نیست خودتان اقدام به تنظیم منطقه زمانی کنید.
ساختن تاریخ با استفاده از تابع mktime()
همانطور که پیش تر هم اشاره کردیم، پارامتر timestamp در تابع date()
یک تایم استمپ دلخواه را مشخص میکند. در صورتی که این پارامتر ارائه داده نشود، از تاریخ و زمان فعلی استفاده خوهد شد. (مانند مثال های بالا)
تابع mktime()
در PHP تایم استمپ unix را به عنوان تاریخ باز میگرداند. تایم استمپ Unix حاوی تعداد ثانیه های گذشته از Unix Epoch (یکم ژانویه 1970 00:00:00 GMT) تا زمان مشخص شده است.
سینتکس mktime()
mktime(hour, minute, second, month, day, year)
مثال زیر با استفاده از مقدار ساخته شده توسط تابع mktime()
و با استفاده از تابع date()
تاریخی را ایجاد کرده و به نمایش در می آورد :
1 2 3 4 | <?php $d=mktime(11, 14, 54, 8, 12, 2014); echo "تاریخ ایجاد شده به شرح روبروست " . date("Y-m-d h:i:sa", $d); ?> |
در صورتی کنجکاوی توصیه میکنیم مقدار متغیر d را اکو کرده و نگاهی به مقدار آن بیاندازید.
ساختن تاریخ از رشته با تابع strtotime()
تابع strtotime()
جهت تبدیل رشته تاریخ قابل خواندن توسط انسان به تایم استمپ یونیکس به کار میرود. (تعداد ثانیه های گذشته از یکم ژانویه 1970 00:00:00 GMT)
سینتکس
strtotime(time, now)
در مثال زیر با استفاده از تابع strtotime رشته دلخواه را تبدیل به تاریخ با فرمت مورد نظر کرده ایم :
1 2 3 4 | <?php $d=strtotime("10:30pm April 15 2014"); echo "تاریخ ایجاد " . date("Y-m-d h:i:sa", $d); ?> |
این حالت تبدیل رشته به تاریخ، عملی کاربردی است که به شما اجازه میدهد از حالات متنوع دیگری مانند آنچه در نمونه کد های زیر درج شده نیز بهره بگیرید :
1 2 3 4 5 6 7 8 9 10 | <?php $d=strtotime("tomorrow"); echo date("Y-m-d h:i:sa", $d) . "<br>"; $d=strtotime("next Saturday"); echo date("Y-m-d h:i:sa", $d) . "<br>"; $d=strtotime("+3 Months"); echo date("Y-m-d h:i:sa", $d) . "<br>"; ?> |
در پایان هر چند تابع strtotime تابعی قوی و کاربردی است اما همیشه توصیه میکنیم مقادیری که به آن ارائه میدهید را بررسی کرده و از پیش، از تولید تاریخ های معتبر اطمینان حاصل کنید.
چند مثال دیگر
کد زیر تاریخ 6 شنبه آینده را به نمایش میگذارد :
1 2 3 4 5 6 7 8 9 | <?php $startdate = strtotime("Saturday"); $enddate = strtotime("+6 weeks", $startdate); while ($startdate < $enddate) { echo date("M d", $startdate) . "<br>"; $startdate = strtotime("+1 week", $startdate); } ?> |
مثال زیر تعداد روزهای باقی مانده به 4 نوامبر را به نمایش میگذارد :
1 2 3 4 5 | <?php $d1=strtotime("November 04"); $d2=ceil(($d1-time())/60/60/24); echo "There are " . $d2 ." days until 4th of November."; ?> |
در پایان میتوانید جهت آشنایی کامل با همه توابع وابسته به تاریخ و زمان در سایت رسمی PHP روی اینجا کلیک کنید
مطالعه بخش بعدی : استفاده از Include در PHP