2012-08-01 47 views
0

好吧,这似乎很奇怪。请多多包涵。有人在SO中询问this问题。他想要上个星期一的日期。所以我建议相同的函数返回不同的输出

$monday=date(Y-m-d,strtotime('Monday this week')) 

输出是完美的我的本地主机。它显示2012-07-30。另一个人评论说,我提到的功能不起作用。它给出了相同的日期,如

$monday=date(Y-m-d,strtotime('Monday')) 

即,2012-08-06。而他并没有说谎!他链接的在线编辑器显示下一个星期一的日期。检查this!这是为什么发生?

我搜查了一下,但没能弄清楚原因。是因为旧版本的PHP?任何帮助将不胜感激。谢谢

+2

介于5.2.17和5.3.10之间的问题已修复:http://viper-7.com/1PPz5m(查看粘贴历史记录)。 'strtotime()'的更新日志没有提到这个(意外的惊喜),但是我知道*有*改变了'strtotime()'5.3,所以我猜这就是修复它的原因。 – DaveRandom 2012-08-01 10:59:28

+0

该网站使用PHP 5.2.12 – Tivie 2012-08-01 11:04:47

+0

好的,在[5.3.0发布的更新日志](http://www.php.net/ChangeLog-5.php#5.3.0)中挖掘我发现这个:'对“本周”,“前一周”,“上周”和“下周”短语给予适当的支持,以便它们实际上意味着一周而不是当天的七天。“ - 听起来可能是答案我。 – DaveRandom 2012-08-01 11:05:56

回答

1

介于5.2.17和5.3.10之间的问题已修复:http://viper-7.com/1PPz5m(查看粘贴历史记录)。

挖在changelog for the 5.3.0 release左右,我发现这一点:

的“本周”,“上一周” /“上周”和“下周”短语适当的支持,使他们实际上指的是周而不是当天的七天。

听起来像这可能是我的答案。基本上在5.3.0之前this week等可能会给你一个错误的答案,因为它会查找当前日期周围7天内的一天,而在5.3.0和更高版本中,它将被正确解释。

相关问题