为什么strtotime休息一周?

时间:2011-10-07 17:11:45

标签: php strtotime

strtotime("third Saturday October 2011")

应该是10/15/2011。但是,它将在2011年10月22日到来。我认为这是因为2011年10月在星期六开始,PHP正在查看第一整周。由于2011年1月10日是星期六而不是整整一周它忽略了它。

一些研究建议在一周之间加上“of”,月份应该修复它,但这不起作用。

有关为何发生这种情况的建议以及我可以采取哪些措施来纠正它?

3 个答案:

答案 0 :(得分:2)

这是PHP中的文档缺陷< 5.2.7(参见strtotime):

  

在5.2.7之前的PHP 5中,请求给定的给定事件   一个月的工作日,那个工作日是这个月的第一天   会错误地将一周添加到返回的时间戳。这有   已在5.2.7及更高版本中得到纠正。

你需要升级PHP,或者使用Jonathan Kuhn建议的解决方法。

答案 1 :(得分:1)

我在php 5.2.6上得到了与你相同的结果。这对我有用,虽然不理想。

echo date('Y-m-d', strtotime('Saturday October 2011 +2 weeks'));

答案 2 :(得分:0)

<?php echo date('Y-m-d', strtotime('third Saturday of October 2011')); ?>

对我来说很好。输出为2011-10-15