php - 150 年前的今天在 PHP
问题描述
我希望有一个单行返回函数来从今天开始获取 150 年前的日期。
我目前有,
return date('Y-m-d', strtotime('-150 year'));
问题是这返回 1970-01-01 而不是 150 年前。
为什么是这样?
解决方案
您的问题是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');
推荐阅读
- python - 为什么 PyMongo 脚本至少需要 500 毫秒才能执行?
- javascript - 在哪里可以找到 ag-grid 可用区域设置文本的完整列表?
- c# - C# 通过 Lotus Notes 发送电子邮件,“?”有问题 在电子邮件正文中-
- angular - 在 Hyperledger Composer 上启动 Angular 前端时出错
- spring - 如何使用spring boot从数据库表中删除特定数据?
- nix - 使用 Nix 打包 CentOS5 工具链依赖
- ionic-framework - 在 ionic 4 上安装外部插件时出错
- spring-integration - Spring集成scatterGather用法
- javascript - 在 JQuery/JS 中获取非自定义属性
- javascript - 展开切换返回意外结果 JavaScript