strtotime的版本差异(“上个月的第一天”)?

时间:2012-04-20 16:43:33

标签: php date

在包含

的脚本中
date('Y-m-d', strtotime('first day of last month'))
在版本5.3.10(localhost)中的

我得到了例如'2012-03-01'。

在版本5.2.17(远程主机)中的

我得到'1969-12-31'。

是否有表达式会返回两个版本的预期结果(例如'2012-03-01')?

4 个答案:

答案 0 :(得分:8)

您应该使用mktime()功能:

<?php 
echo date('Y-m-d', mktime(0,0,0,date('n')-1,1,date('Y'))); //2012-03-01
?>

See In Action

答案 1 :(得分:2)

date('Y-m-d', strtotime('first day of -1 month'))

在PHP 7.0上正常工作

答案 2 :(得分:1)

这是来自PHP 5.2.17的known bug

答案 3 :(得分:0)

很简单:

date('Y-m-01')

每个月的第一天始终为1。