php - تاریخ و زمان
php - تاریخ و زمان

php - تاریخ و زمان

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

تابع date

این تابع مقدار timestamp را به تاریخ و زمان قابل خواندن تبدیل می کند.

date(format,timestamp)

  • format : اجباریست. فرمتی که تاریخ و زمان را میخواهید نشان دهید
  • timestamp : اختیاریست. تاریخ و زمان مورد نظر که به شکل پیشفرض، تاریخ و زمان فعلی سرور شما می باشد

مثال های تاریخ

مقادیر پارامتر format در تابع date نحوه نمایش تاریخ را مشخص می کند. به منظور نمایش تاریخ می توان از موارد زیر استفاده کرد :

  • d : نشان دهنده روز ماه است ( عددی بین 01 تا 31 )
  • m : نشان دهنده ماه است ( عددی بین 01 تا 12 )
  • Y : نشان دهنده سال است
  • l : نشان دهنده روز هفته است

سایر کاراکترها مانند "/", ".", و یا "-" معمولا بین علامت های بالا قرار میگیرند تا نمایش بهتری از تاریخ و یا زمان ارائه دهند.

در مثال زیر تاریخ امروز ( 23-07-2019 ) به شکل های مختلف توسط تابع date نمایش داده شده: ( در صورتی که این کد را در سرور خود اجرا کنید، مقدار نمایش داده شده تاریخ فعلی سرور شما می باشد )

echo "Today is " . date("Y/m/d") . "<br>"; // Today is 2019/07/23
echo "Today is " . date("Y.m.d") . "<br>"; //Today is 2019.07.23
echo "Today is " . date("Y-m-d") . "<br>"; //Today is 2019-07-23
echo "Today is " . date("l"); //Today is Tuesday

به عنوان مثال دیگر، کد زیر به شکل خودکار سال کپی رایت سایت شما را ، سال فعلی نمایش می دهد: ( در صورتی که این کد را در سرور خود اجرا کنید، مقدار نمایش داده شده تاریخ فعلی سرور شما می باشد )

&copy; 2010-<?php echo date("Y");?>  // © 2010-2019

 مثال های زمان

مقادیر پارامتر format در تابع date نحوه نمایش تاریخ را مشخص می کند. به منظور نمایش زمان می توان از موارد زیر استفاده کرد :

  • H : نمایش ساعت ( عددی بین 00 تا 24 )
  • h : نمایش ساعت ( عددی بین 00 تا 12 )
  • i : نمایش دقیقه ( عددی بین 00 تا 59 )
  • s : نمایش ثانیه ( عددی بین 00 تا 59 )
  • a : نمایش am و یا pm

 در مثال زیر، ساعت فعلی با فرمت خواسته شده به نمایش در خواهد آمد: ( در صورتی که این کد را در سرور خود اجرا کنید، مقدار نمایش داده شده زمان فعلی سرور شما می باشد )

echo "The time is " . date("h:i:sa"); //The time is 06:16:54am

 بدست آوردن زمان بر طبق منطقه زمانی ( Time Zone )

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

مثال زیر ، ست کردن این مقدار برای موقعیت ایران است:

date_default_timezone_set('Asia/Tehran');

ایجاد تاریخ توسط تابع mktime   

تابع date به شکل پیشفرض تاریخ و زمان فعلی را نمایش می دهد. در صورتی که نیاز داشته باشیم زمان خاصی را به نمایش بگذاریم، از تابع mktime برای ایجاد یک timestamp استفاده خواهیم کرد. تابع mktime به شکل زیر تاریخ و زمان مورد نظر ما را دریافت و timestamp مربوطه را return می کند.   

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

مقدار تولید شده توسط تابع mktime را به عنوان آرگمان دوم به تابع date ارسال می کنیم.

$d=mktime(11, 14, 54, 8, 12, 2014);
echo "Created date is " . date("Y-m-d h:i:sa", $d); //Created date is 2014-08-12 11:14:54am

تابع strtotime

 این تابع به منظور تبدیل تاریخ قابل خواندن توسط ما به زمان UNIX می باشد.

strtotime(time,now)

برای مثال:

 $d=strtotime("10:30pm April 15 2014");
echo "Created date is " . date("Y-m-d h:i:sa", $d); //Created date is 1988-10-11 10:30:00pm

 همچنین در مثال های زیر انواع مختلف استفاده از تابع strtotime  را با هم بررسی می کنیم

$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>";

 

 مثال زیر شش شنبه آینده را نشان می دهد

$startdate = strtotime("Saturday");
$enddate = strtotime("+6 weeks", $startdate);

while ($startdate < $enddate) {
  echo date("M d", $startdate) . "<br>";
  $startdate = strtotime("+1 week", $startdate);
}

مثال زیر تعداد روز ها تا 4 July را نشان می دهد

$d1=strtotime("July 04");
$d2=ceil(($d1-time())/60/60/24);
echo "There are " . $d2 ." days until 4th of July.";