在開始之前,應該要設定你所在的時區,你可以在php.ini或程式當中設定。
PHP.INI
date.timezone= 'Asia/Taipei';
PHP程式當中
date_default_timezone_set('Asia/Taipei');
以下的類別從PHP5.2.0開始支援。
$date=new DateTime();//不帶有參數則以現在的時間建立
沒有在建構子中輸入引數則以現在的時間建立一個DateTime物件
$date2=new DateTime('2017-06-15 4:00 PM');
也可以輸入PHP限定的格式,但資料的來源若不相同,很難達到統一個格式,可以使用DateTime::createFromFormat靜態建構子來設定格式
$mydate=DateTime::createFromFormat("M j, Y H:i:s","Mar 15, 2018 18:03:15");
如果要將DateTime實體echo出來,不能直接對這個物件echo,必須透過formate方法後才能輸出
echo $mydate->format("Y m d");
DateInterval是一時間的長度,例如2周、2天;可以使用DateInterval類別來輔助修改DateTime類別,例如DateTime類別提供的add()方法,可以透過DateInterval來操作增加的時間。
DateInterval建構子接受一字串參數,為一時間區間規範,皆以P開頭,有以下的週期代號:
Y(年)、M(月)、D(日)、W(週)、H(時)、M(分)、S(秒)
一串的週期代號可以包含日期與時間,以T分隔日期與時間,例如P2DT1H2M表示2天1小時2分鐘
$inte=new DateInterval("P2D");
$mydate->add($inte);
echo "<BR>".$mydate->format("Y m d");
先建立DateInterval實體,將其傳入mydate的DateTime類別提供的add()方法。
DateTimeZone類別可以處理時區問題,需要傳入PHP認得的時區格式。
$zoneus=new DateTimeZone('America/New_York');
$mydate->setTimezone($zoneus);
echo "<BR>".$mydate->format("Y m d H i s");
可以將宣告的時區實體傳入DateTime類別提供的setTimezone方法來改變時間的時區
有效的時區表可以參考PHP的官方網站:http://php.net/manual/zh/timezones.php
DatePeriod可以每隔一固定時間迭代一串日期(DateTime實體),DatePeriod建構子需要三個引數:開始時間的DateTime實體、迭代區間的DateInterval實體、迭代數量,第四個是可選的,指定結束日期的DateTime實體。
$date=new DateTime();
$interval=new DateInterval("P2D");
$period=new DatePeriod($date,$interval,3);
foreach ($period as $value){
echo $value->format("Y m d")."<BR>";
}
關於作者
粉絲專頁
文章分類