首页 > 解决方案 > 150 年前的今天在 PHP

问题描述

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

我目前有,

return date('Y-m-d', strtotime('-150 year'));

问题是这返回 1970-01-01 而不是 150 年前。

为什么是这样?

标签: phpfunctiondate

解决方案


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

$date = new DateTime('-150 year');
echo $date->format('Y-m-d');

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

1870-02-19

如果代码确实需要在一行中,您可以编写:

$date = (new DateTime('-150 year'))->format('Y-m-d');

3v4l.org 上的演示


推荐阅读