具有相对格式的 PHP strtotime() 返回奇怪的值


echo date("Y/m/d", strtotime("third monday of february 2037")); //2037/02/16
echo date("Y/m/d", strtotime("third monday of february 2038")); //1970/01/01

PHP 版本是 5.6.3。谢谢

32 位有符号整数时间戳的范围有限

引用自 PHP 文档

时间戳的有效范围通常从 1901 年 12 月 13 日星期五 20:45:54 UTC 至 2038 年 1 月 19 日星期二 03:14:07 UTC。(这些是日期 对应于 32 位有符号的最小值和最大值 整数。

这就是为什么 DateTime 对象是处理日期和时间的更好方法

来自 PHP 文档,

注意:

时间戳的有效范围通常从 12 月 13 日星期五 1901 20:45:54 UTC 至 星期二, 19 一月 2038 03:14:07 UTC.(这些是 对应于 32 位的最小值和最大值的日期 有符号整数。

您可以使用日期时间类尝试这种方式

$date = new DateTime('third monday of february 2038');
echo $date->format('Y/m/d');

最新更新