Php 产生错误输出的日期函数

Php 产生错误输出的日期函数,php,Php,有人能帮忙吗? 为什么这个代码会产生错误的答案 echo date("m/d/Y", strtotime("third monday", mktime(0,0,0,8,1,2016))); echo '<br/>'.date("m/d/Y", strtotime("third monday 2016-08" )); 2016年8月的第三个星期一实际上是2016年8月15日 此外,对于任何月份的第三个星期一,如果第一个星期一是星期一,则会生成不正确的结果 如果第一天不是星期一,它会起

有人能帮忙吗? 为什么这个代码会产生错误的答案

echo date("m/d/Y", strtotime("third monday", mktime(0,0,0,8,1,2016)));
echo '<br/>'.date("m/d/Y", strtotime("third monday 2016-08" ));
2016年8月的第三个星期一实际上是2016年8月15日 此外,对于任何月份的第三个星期一,如果第一个星期一是星期一,则会生成不正确的结果


如果第一天不是星期一,它会起作用。

找到了解决办法,但我无法告诉你为什么它会像你这样做。。。希望其他人能解释原因

echo '<br/>'.date("m/d/Y", strtotime("third monday of August 2016" ));
echo '<br/>'.date("m/d/Y", strtotime("third monday of 2016-08" ));
echo'
日期(“m/d/Y”,标准时间(“2016年8月第三个星期一”); 回音日期(“m/d/Y”,标准时间(“2016-08年第三个星期一”);
使用的第三个星期一将使其工作。

找到以下解释: 注意“序数空间dayname space'of'”和“last'space dayname space'of'”中的“of”有特殊的作用

它将月份的日期设置为1。 “的序号dayname”不会提前到另一天。 (例如:“2008年7月的第一个星期二”表示“2008-07-01”)。“序号日名”确实会提前到另一天。 (例如:“2008年7月1日星期二”表示“2008-07-08”

(“序号dayname”确实提前到另一天。 (示例“2008年7月23日第一个星期三”指“2008-07-30”))

“'last'dayname'of'”取当前月份的最后一天名。 (示例:“2008年7月最后一个星期三”表示“2008-07-30”)

(例如:“上周三2008年7月”表示“2008-06-25”;“2008年7月”
首先将当前日期设置为“2008-07-01”,然后“最后一个星期三”移动到上一个星期三,即“2008-06-25”).

奇怪的是,如果你做了
2016-08周一
它会像它应该做的那样做
08/01/2016
,但是如果你做了
2016-08第一个星期一
它会转到
08/08/2016>…2016-08-01之后的第三个星期一是2016-08-22,所以它会给你准确的广告结果。谢谢你,我不知道为什么只有在第一个星期一才失败。它发生在所有的
第一个
,如果你尝试
2016-08年第一个星期二
,你也会得到错误的日期!@Richard
echo '<br/>'.date("m/d/Y", strtotime("third monday of August 2016" ));
echo '<br/>'.date("m/d/Y", strtotime("third monday of 2016-08" ));
"'last' dayname" takes the last dayname from the current day.