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 年前。
为什么是这样?
您的问题是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)