乐趣区

PHP 的 DateTime 类详解

导语
DateTime 类虽然早就有所了解,但在实际中很少使用,更多的还是用 date()、time()、strtotime() 等。DateTime 类是 PHP 5.2 后新增的处理时间格式类,可以输出、转换、计算时间,很好的替代了 date() 等函数。下面整理记录下。
实例
输出时间
<?php
$date = new DateTime;
echo $date->format(‘Y-m-d H:i:s’);
echo $date->format(‘Y-m-d’);
echo $date->getTimestamp();// 时间戳
$timezone = $data->getTimezone();
echo $timezone->getName();// Asia/Shanghai
自定义时间
<?php
$date = new DateTime(‘2018-01-01’);
echo $date->format(‘Y-m-d H:i:s’);// 2018-01-01 00:00:00

$date1 = new DateTime;
$date1->setTimestamp(‘1514739661’);
echo $date1->format(‘Y-m-d H:i:s’);// 2018-01-01 01:01:01

$date2 = new DateTime(‘tomorrow’);
echo $date2->format(‘Y-m-d’);// 2018-03-14

$date3 = new DateTime(‘+2 day’);
echo $date3->format(‘Y-m-d’);// 2018-03-15
编辑时间
<?php
$date = new DateTime;
$date->setDate(2020, 8, 8);
echo $date->format(‘Y-m-d H:i:s’);// 2020-08-08 20:03:54

$date1 = new DateTime;
$date1->setTime(2, 3, 4);
echo $date1->format(‘Y-m-d H:i:s’);// 2018-03-13 02:03:04

$date3 = new DateTime;
$date3->modify(‘+1 day’);
echo $date3->format(‘Y-m-d H:i:s’);// 2018-03-14 20:08:25
$date3->modify(‘+20 day’);
echo $date3->format(‘Y-m-d H:i:s’);// 2018-04-03 20:10:07
$date3->modify(‘+1 month’);
echo $date3->format(‘Y-m-d H:i:s’);// 2018-05-03 20:10:17
$date3->modify(‘-1 year’);
echo $date3->format(‘Y-m-d H:i:s’);// 2017-05-03 20:12:17

$data4 = new DateTime;
$temp = $data4->setISODate(2018, 3, 2);
echo $temp->format(‘Y-m-d’);// 2018-01-16
计算时间
<?php
$date = new DateTime;
$date1 = new DateTime(‘2016-01-01’);
print_r($date > $date1 ? 1 : 2);// 1

print_r($date->diff($date1));// DateInterval Object ([y] => 2 [m] => 2 [d] => 12 [h] => 16 [i] => 52 [s] => 50 [weekday] => 0 [weekday_behavior] => 0 [first_last_day_of] => 0 [invert] => 1 [days] => 802 [special_type] => 0 [special_amount] => 0 [have_weekday_relative] => 0 [have_special_relative] => 0 )

// 格式化输出
$diff = $date->diff($date1);
echo $diff->format(“ 相差 %Y 年 %m 月 %d 天 ”);// 相差 02 年 2 月 12 天

参考资料:PHP 手册、php 自带 datetime 类的使用、PHP 中的 DateTime 类。

退出移动版