DateTimeInterface

时间类的接口

DataTime

从DateTimeInterface继承

DateTimeImmutable

从DateTimeInterface继承,同DataTime基本一样,只是在调用了修改相关的函数,如modify时,会返回新的对象

DateTimeZone

用的少,后续补上

DateInterval

时间间隔类,时间间隔表示固定量的时间(多少年,月,天,小时等),也可以表示一个字符串格式的相对时间,当表示相对时间的时候,字符串格式是 DateTimeImmutable 和 DateTime 类的构造函数所支持的格式。
创建 DateInterval 对象的常用方法是通过 DateTimeInterface::diff() 计算两个日期/时间对象之间的差异。由于没有明确定义的方法来比较日期间隔,因此 DateInterval 实例是无法比较的。

常用的DataInterval构造方式举例:
1天,new DateInterval(‘P1D’)
1年1月1天1小时1分1秒,new DateInterval(‘P1Y1M1DT1H1M1S’)

说明:
以上构造函数传入字符串称为Duration,一串描述间隔日期的字符串,

P之后的表示是年、月、日、周,T之后是时、分、秒。大的单位必须在前,如一年一天为’P1Y1D’而不是’P1D1Y’。

DatePeriod

DatePeriod 类表示一个时间周期。
时间周期内允许对一组日期和时间进行迭代,在指定的时间间隔内定期重复。

Date/Time 函数(一些全局函数)

后续补上

例子

  • 最近的一段时间范围,如今天,近3天,近3月,近一年等等
<?php

date_default_timezone_set('Asia/Shanghai');


/*
* @brief 返回最近时间范围
* @duration 参看DateInterval构造函数,间隔时间字串,如P1D, P1YT1H等
*/
function getLatestDateTimeRange( $duration )
{
$endTime = new DateTime('now');
$beginTime = clone $endTime;
$beginTime->sub( new DateInterval($duration ));

return array($beginTime, $endTime);
}


list($begin, $end) = getLatestDateTimeRange( 'P1D');
echo $begin->format('Y-m-d H:i:s') . '<br>'; //按此格式输出 2022-11-21 15:49:39
echo $end->format('Y-m-d H:i:s') . '<br>'; //按此格式输出 2022-11-22 15:49:39

echo $begin->getTimestamp() . '<br>'; //输出时间戳,单位S
echo $end->getTimestamp() . '<br>'; //输出时间戳,单位S


?>

参看

​https://www.php.net/manual/zh/book.datetime.php​