PHP Datetime 時間的增減方式

Written by Simon Asika on

PHP5 以後的 DateTime 是一個強大的時間處理物件,許多框架的 Date 物件就是延伸自 DateTime,因此通常不會特別實作太多時間處理函式在裡面,而是讓你專注的用原生的 DateTime 來處理時間,現在我來整理一下常用的一些時間日期增減方式。

取得當下時間日期

$date = new DateTime('2000-01-01');
// OR
$date = new DateTime('now');

增加10天

用 DateInterval 與 DateTime::add()

$date   = new DateTime('2000-01-01');
$day    = new DateInterval('P10D'); // P開頭代表日期,10D 代表 10 天
$date->add($day); 
echo $date->format('Y-m-d') ;

用 DateTime::modify()

$date = new DateTime('2006-12-12');
$date->modify('+10 day');
echo $date->format('Y-m-d');

減少一個月

$date = new DateTime('2000-12-31');

$date->modify('-1 month');
echo $date->format('Y-m-d') ;

用 DateInterval 增加兩年四天六小時又八分

$date   = new DateTime('2000-01-01');
$day    = new DateInterval('P2Y4DT6H8M'); // 兩年四天六小時又八分,中間的 T 是時間的意思
$date->add($day); 
echo $date->format('Y-m-d') ;

DateInterval 的寫法說明

new DateInterval('P1Y2M3D'); // P開頭表示日期,一年二個月又三天

new DateInterval('PT4H5M6S'); // T開頭表示時間,四小時五分又六秒

new DateInterval('P1Y2M3DT4H5M6S'); // 合併起來,一年二個月三天四小時五分又六秒

new DateInterval('P3M'); // 三個月

new DateInterval('PT1H'); // 一小時

Control Tools

WS-logo