strtotime('First Monday ..')当它是该月的第一天时返回错误的日期

时间:2013-02-06 12:13:40

标签: php

 echo date('Y-m-d', strtotime('First Monday '.date('F o', strtotime("-4 months")));

以上代码返回2012-10-08,这是不正确的 - 2012年10月的第一个星期一应该返回2012-10-01。

手册(http://php.net/manual/en/function.strtotime.php)中的更改日志指定以下内容:

In PHP 5 prior to 5.2.7, requesting a given occurrence of a given weekday in a 
month where that weekday was the first day of the month would incorrectly add
one week to the returned timestamp.

This has been corrected in 5.2.7 and later versions.

似乎很清楚,这是导致错误返回日期的原因,但我使用的是PHP版本5.4.7(在localhost上运行xamp)!

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

尝试检索当月的第一天时,您错过了关键字of

echo date('Y-m-d', strtotime('First Monday of '.date('F o', strtotime("-4 months")));

我在bug report

上找到了相关信息

我目前的版本是PHP 5.4.4,如果它仍然不适合你