计算每月的第三个星期日


Calculating third sunday of a month

我用这段代码来确定我们在哪个月:

$monthyear = date('F Y');

然后确定一个月的第三个星期日

$thirdsunday = date("D, j M Y", strtotime($monthyear . ' third sunday'));

结果是2015年3月22日星期日,恰好是每月的第4个星期日(3月1日星期日,3月8日,3月15日星期日)。

这是怎么回事?

应该是2015年3月的第三个星期日

$thirdsunday = date("D, j M Y", strtotime('third sunday of ' . $monthyear));

http://php.net/manual/en/datetime.formats.relative.php

"序号日名"确实提前到另一天。(例如"第一个星期三 July 23rd, 2008"表示"2008-07-30")。

http://php.net/manual/en/datetime.formats.relative.php

这意味着,当你说third sunday没有of时,它不是做"每月的第三个星期日",而是在给定日期之后的第三个星期日;当你只指定一个月时,给定的日期被解释为该月的第一天,因此第一个星期日之后的第3个星期日 - 当第一个星期日是星期日时 - 因此将是该月的第四个星期日