150 年前的今天 PHP

Lia*_*lay -1 php date function

我希望有一个单行返回函数来获取从今天算起 150 年前的日期。

我目前有,

return date('Y-m-d', strtotime('-150 year'));
Run Code Online (Sandbox Code Playgroud)

问题是这返回的是 1970 年 1 月 1 日而不是 150 年前。

为什么是这样?

Nic*_*ick 5

您的问题是strtotime返回 unix 时间戳(自 以来的秒数1970-01-01 00:00:00),因此它可以理解的最早日期是1970-01-01。由于 150 年前的今天是 before1970-01-01 strtotime返回false,这被解释为日期的 0 时间戳,导致输出1970-01-01。要解决此限制,请使用以下DateTime类:

$date = new DateTime('-150 year');
echo $date->format('Y-m-d');
Run Code Online (Sandbox Code Playgroud)

输出(截至2020-02-19):

1870-02-19
Run Code Online (Sandbox Code Playgroud)

如果代码确实需要在一行中,你可以这样写:

$date = (new DateTime('-150 year'))->format('Y-m-d');
Run Code Online (Sandbox Code Playgroud)

3v4l.org 上的演示