[PHP] DateTime 時間類別與操作

標籤: PHP

在開發網站功能的時候滿常會使用到跟時間有關的東西,這邊舉一些常用的類別來說明。

  • DateTime: 日期與時間的主要類別

DateTime

//取得現在時間
$date = new DateTime();

// yesterday, tomorrow (時間都是 00:00:00)
$date = new DateTime('yesterday');

//取得指定時間
$date = new DateTime('2020-05-20 05:20:00');

//另一種格式
$date = new DateTime('2020/05/20 05:20 AM');

// +- day, week, month, year
$date = new DateTime('+1 day');

 

一些可以用來敘述的時間設定可以參考 Relative Formats,比如:

$date = new DateTime('first day of this month');

$date = new DateTime('2 days ago');

 

DateTime::createFromFormat()

因應不同格式建立物件: DateTime::createFromFormat

$date = DateTime::createFromFormat('Y/m/d H:i', '2020/05/20 20:20');

$date = DateTime::createFromFormat('\t\o\d\a\y \i\s Y F j', 'today is 2020 May 20');

 

Output:

format()- 設定格式

echo $date->format('Y-m-d H:i:s');

format 可以設定的值可以參考官方文件

 

getTimestamp()- 取得時間戳記

echo $date->getTimestamp();

 

Setting:

setData()

$date->setDate(2020, 08, 20);

setTime()

$date->setTime(12, 00, 20);

setTimestamp()

$date->setTimestamp(1495088399);

modify()

$date->modify('-10 days');

 

Compare:

diff()- 帶入兩個時間,幫你算出差距

$date1 = new DateTime('2020-08-01');
$datt2 = new DateTime('2020-08-15');
$interval = $date1->diff($datt2);

// +14 days
echo $interval->format('%R%a days');