【问题标题】:150 years ago today in PHP [duplicate]150 年前的今天在 PHP [重复]
【发布时间】:2020-02-19 00:58:41
【问题描述】:

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

我现在有,

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

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

这是为什么?

【问题讨论】:

标签: php function date


【解决方案1】:

您的问题是 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');

Demo on 3v4l.org

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-10
    • 2011-06-10
    • 1970-01-01
    相关资源
    最近更新 更多