登入
首頁 所有文章 PHP PHP日期與時間處理
長也   2018-06-15 15:56:20(1年前)    194點閱   0喜歡  0收藏
PHP日期與時間處理  

設定時區

在開始之前,應該要設定你所在的時區,你可以在php.ini或程式當中設定。

PHP.INI

date.timezone= 'Asia/Taipei';

PHP程式當中

date_default_timezone_set('Asia/Taipei');

以下的類別從PHP5.2.0開始支援。

DateTime類別

$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類別

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類別

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類別

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

本文作者:長也

糾結與想不開的資管系學生,之前常碰PHP,現在常碰到的是Python,閒暇之餘就記錄一些筆記。

             

如要發表回覆,請先 登入

  0則回覆