تابع ()date برای کار با تاریخ و زمان در PHP استفاده می شود و دارای ساختار زیر است:
date(format,timestamp)
پارامتر مورد نظر | توضیحات |
Format | اجباری - قالب timestamp را مشخص می کند. |
Timestamp | اختیاری - timestamp خاصی را مشخص می کند. به صورت پیش فرض روی timestamp فعلی (زمان حال) تنظیم شده است. |
نکته: timestamp یک سری کاراکتر است که زمان دقیق یک رویداد را مشخص می کند.
همانطور که گفته شد پارامتر format در تابع ()date
مشخص کننده ی قالب تاریخ و زمان در php است. مهم ترین مقادیر format در این تابع عبارت اند از:
d
- یک روز از ماه را مشخص می کند (01 تا 31)m
- یک ماه را مشخص می کند (01 تا 12)Y
- یک سال را مشخص می کند (چهار رقمی - مثلا 2019)l
(حرف L کوچک) - روز هفته را مشخص می کند (شنبه، یکشنبه و الی آخر)کاراکترهای دیگری مانند /
یا -
یا .
نیز می توانند به این کاراکترها اضافه شوند تا قالب بندی بهتری داشته باشیم.
در مثال زیر تاریخ امروز را به سه شکل مختلف مشاهده می کنید:
<!DOCTYPE html> <html> <body> <?php echo "Today is " . date("Y/m/d") . "<br>"; echo "Today is " . date("Y.m.d") . "<br>"; echo "Today is " . date("Y-m-d") . "<br>"; echo "Today is " . date("l"); ?> </body> </html>
حتما شما هم دیده اید که در قسمت footer وب سایت ها علامت کپی رایت را به همراه سال قرار می دهند. اگر می خواهید سال در این علامت به صورت خودکار به روز شود می توانید از کد زیر استفاده کنید:
<!DOCTYPE html> <html> <body> © 2010-<?php echo date("Y");?> </body> </html>
با کاراکترهای اصلی تاریخ آشنا شدیم اما هنوز کاراکترهای اصلی زمان را ندیده ایم. کاراکترهای زمان برای format به این شکل هستند:
مثال زیر زمان فعلی را به شما نمایش می دهد:
<!DOCTYPE html> <html> <body> <?php echo "The time is " . date("h:i:sa"); ?> </body> </html>
نکته: زمان در PHP بر اساس زمان سرور تنظیم می شود بنابراین اگر زمان فعلی برای شما چند ساعتی عقب یا جلو بود به دلیل تفاوت منطقه ی زمانی شما با منطقه ی زمانی سرور است.
همانطور که گفتیم ساعت ارائه شده در زبان PHP بر اساس منطقه ی زمانی سرور است. اگر دوست دارید منطقه ی زمانی سرور را روی زمان خاصی تنظیم کنید می توانید به شکل زیر عمل کنید:
<!DOCTYPE html> <html> <body> <?php date_default_timezone_set("America/New_York"); echo "The time is " . date("h:i:sa"); ?> </body> </html>
در این مثال منطقه ی زمانی را روی America/New_York (شهر نیویورک) قرار داده ایم و سپس از آن خروجی گرفته ایم.
همه می دانیم که پارامتر timestamp در تابع ()date
یک timestamp را مشخص می کند. بنابراین اگر timestamp خاصی را مشخص نکنید از timestamp زمان حال استفاده می شود. حال تابع ()mktime
یک timestamp خاص بر اساس Unix را برمی گرداند که معادل تاریخ خاصی است. Unix timestamp تعداد ثانیه هایی است که از اول ژانویه سال 1970 (ساعت 00:00:00) تا تاریخ معینی گذشته باشد. قالب کلی این تابع به شکل زیر است:
mktime(hour,minute,second,month,day,year)
به مثال زیر توجه کنید:
<!DOCTYPE html> <html> <body> <?php $d=mktime(11, 14, 54, 8, 12, 2014); echo "Created date is " . date("Y-m-d h:i:sa", $d); ?> </body> </html>
تابع ()strtotime تاریخ عادی و قابل خواندن برای انسان را تبدیل به زمان Unix می کند و دارای ساختار کلی زیر است:
strtotime(time,now)
به مثال این تابع توجه کنید:
<!DOCTYPE html> <html> <body> <?php $d=strtotime("10:30pm April 15 2014"); echo "Created date is " . date("Y-m-d h:i:sa", $d); ?> </body> </html>
البته PHP در این موارد کاملا هوشمندانه عمل می کند بنابراین می توانید چندین مقدار متفاوت قرار دهید:
<!DOCTYPE html> <html> <body> <?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>"; ?> </body> </html>
مثال اول: این مثال تاریخ های شش شنبه ی آینده را نمایش می دهد:
<!DOCTYPE html> <html> <body> <?php $startdate=strtotime("Saturday"); $enddate=strtotime("+6 weeks", $startdate); while ($startdate < $enddate) { echo date("M d", $startdate) . "<br>"; $startdate = strtotime("+1 week", $startdate); } ?> </body> </html>
توضیح: ابتدا یک روز هفته (Saturday به معنی شنبه) را انتخاب کرده و آن را به تابع strtotime داده ایم. همانطور که قبلا ذکر شد ()strtotime
رشته ی عادی را گرفته و به تاریخ Unix تبدیل می کند. این اولین متغیر ما به نام startdate بود. برای متغیر بعدی که تاریخ پایان است باز هم از تابع strtotime استفاده کرده ایم اما این بار مقدار 6+ weeks را به آن داده ایم که یعنی 6 هفته بعد. سپس با یک حلقه ی while گفته ایم تا زمانی که startdate از enddate کمتر باشد تاریخ ها را echo کن و یک واحد (یک هفته - +1 week) به تاریخ فعلی اضافه کن.
مثال زیر تعداد روزهای باقی مانده تا 4 جولای را نمایش می دهد:
<!DOCTYPE html> <html> <body> <?php $d1=strtotime("July 04"); $d2=ceil(($d1-time())/60/60/24); echo "There are " . $d2 ." days until 4th of July."; ?> </body> </html>
توضیح: در این مثال نیز همان کار را تکرار کرده ایم. یک رشته به strtotime داده ایم. سپس با تابع ()ceil مقدار روز های مانده به 4 جولای را به سمت بالا گِرد کرده ایم (مثلا اگر 1.6 روز مانده است، آنگاه عدد خروجی 2 روز می شود). در آخر هم مقدار مورد نظر را echo کرده ایم تا نمایش داده شود.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.