如果2月1日是星期一,PHP strtotime()"第一个星期一2月"将返回第二个星期一

bas*_*ic6 7 php timestamp date strtotime

我正在研究一个计算假期的PHP函数:

function holidays($country = 1, $timespan_start = 0, $timespan_end = 0)
Run Code Online (Sandbox Code Playgroud)

假日作为数组中的时间戳返回.

由于我必须计算二月的第一个星期一的日期,我试过strtotime("first monday february $year"),我发现这对2010年不起作用,因为2010年1月2日是星期一 - 我得到了2月8日.

更改日志中实际提到了此错误:在5.2.7之前的PHP 5中,请求在该工作日是该月的第一天的一个月中给定工作日的给定事件将错误地将一周添加到返回的时间戳.这已在5.2.7及更高版本中得到纠正.

但我使用的是PHP 5.3.8.为什么我遇到此错误?

Gor*_*don 11

看起来你只是错过了一个"的":

echo date('Y-m-d', strtotime('first monday of february 2010'));
Run Code Online (Sandbox Code Playgroud)

会给出预期的结果.有关各种输入格式,请参阅相关日期PHP手册.