php - 为什么 strtotime() 和 date() 返回 1969-31-12?

标签 php date strtotime

我有这个代码:

$endDate='02-20-2014'; //Just updated this
echo date('Y-d-m',strtotime($endDate));

为什么strtotime()一直给我1969-31-12 ?

我的目标是获得:2014-02-20

最佳答案

根本问题

PHP supported date formats不包括您正在使用的输入日期格式,'02-20-2014'mm-DD-YY
为什么你会收到 1969-31-12

由于您的输入格式错误,strtotime()失败。在 PHP 5.1 及更高版本中,strtotime()会返回 false在这种情况下和 date()调用将评估为 1970-01-01 (即 the day of the UNIX epoch )。

但是,在您的情况下 strtotime()好像回来了-1相反,失败。这表明您使用的是过时版本的 PHP ( 5.0.x or less )。它还会导致 date()调用返回 1969-31-12 (即减去一秒 the UNIX epoch )

解决方案

将您的输入日期格式更改为任何 PHP supported date formats .另外,为了得到你指定的输出日期格式,2014-02-20YY-mm-dd ,您应该调整 format date()的论据功能符合 Y-d-mY-m-d .

例如:

$endDate='2014-20-02';
echo date('Y-m-d',strtotime($endDate));

关于 PHP 版本的旁注

如果可能,强烈建议您将系统从过时的 PHP 5.0.x 版本迁移到最新版本。你应该小心检查the change logs of each version migration ever since以确保您没有破坏任何现有代码。

关于php - 为什么 strtotime() 和 date() 返回 1969-31-12?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22260796/

相关文章:

php - Laravel:表单文件上传失败 - 检测到不正确的类型

r - 如何将日期和时间分成两列

php - 将普通 SQL 语句转换为准备好的语句

r - 在 OSX 上解析法语日期出现神秘错误

javascript - 使用过滤器以自定义格式设置日期格式

php - 最好的方法是如何简单地创建日历?

php - 我如何知道今天是否在 PHP 中的圣诞节和主显节之间?

php - 检查时间戳是否为 x 小时?

javascript - Node.js 中的 PHP aes-256-cbc mcrypt_decrypt() 等价物

php - 如果不存在则创建一个 mysql 记录,否则更新它