strtotime("third Saturday October 2011")
应该是10/15/2011。不过,它将于2011年10月22日发布。我认为这是因为2011年10月在周六开始,PHP正在看第一周。由于2011年10月1日是星期六而不是整周,它会忽略它。为什么strtotime休息一周?
一些研究建议的星期和月份之间把“的”应该修复它,但不起作用。
上为什么会发生什么,我能做些什么来纠正它有什么建议?
strtotime("third Saturday October 2011")
应该是10/15/2011。不过,它将于2011年10月22日发布。我认为这是因为2011年10月在周六开始,PHP正在看第一周。由于2011年10月1日是星期六而不是整周,它会忽略它。为什么strtotime休息一周?
一些研究建议的星期和月份之间把“的”应该修复它,但不起作用。
上为什么会发生什么,我能做些什么来纠正它有什么建议?
这是在PHP < 5.2.7一个记录缺陷(见strtotime):
在PHP 5之前5.2.7,请求在一个月给定 平日的给定发生那个工作日是当月的第一天 会错误地将一周添加到返回的时间戳。这已经在5.2.7及更高版本中得到纠正 。
您需要升级PHP,或者像Jonathan Kuhn建议的那样使用工作。
我在php 5.2.6上得到了和你一样的结果。这对我来说虽然不理想。
echo date('Y-m-d', strtotime('Saturday October 2011 +2 weeks'));
我会避免使用像这样的strtotime。这是可能的,并且经常完成,但是strtotime(和遗留的日期函数)相当......越野车......它们后面的代码相当有趣...使用'DateTime'类代替... – ircmaxell
你指的是:http://php.net/manual/en/class.datetime.php – dcp3450
是的.............. – ircmaxell