9

在包含

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

4 回答 4

8

您应该使用mktime()函数:

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

See In Action

于 2012-04-20T16:49:16.163 回答
2
date('Y-m-d', strtotime('first day of -1 month'))

在 PHP 7.0 上运行良好

于 2017-03-20T16:42:00.087 回答
1

这是PHP 5.2.17 中的一个已知错误

于 2012-04-20T16:45:47.273 回答
0

很简单:

date('Y-m-01')

任何一个月的第一天总是 1。

于 2019-02-28T17:57:59.100 回答