php strtotime是否有bug

$beginMon=strtotime("-1weekMonday");
$endMon=strtotime("-1weekTuesday")-1;
echodate("Y-m-dH:i:s",$beginMon);
echo('
');
echodate("Y-m-dH:i:s",$endMon);
echo("
");
//上面是获取本周一的开始与结束时间戳
//结果如下:
//2015-01-0500:00:00(错误)
//2014-12-2923:59:59(正确)
$beginSun=strtotime("+0weekSunday");
$endSun=strtotime("+1weekMonday")-1;
echodate("Y-m-dH:i:s",$beginSun)."
";
echodate("Y-m-dH:i:s",$endSun)."
";
//上面获取的是本周末的开始与结束时间戳
//结果如下:
//2015-01-0400:00:00
//2015-01-1123:59:59(错误)
//以上案例都是在今天测试(非周末因为周末)
慕尼黑5688855
浏览 339回答 2
2回答

梦里花落0921

你可以通过阅读相关实现源码来理解为什么会有这样的结果:php_date.c和parse_date.c。另外还可以阅读官方文档和常用时期处理参考来看看如何实践。每星期的七天,'sunday'|'monday'|'tuesday'|'wednesday'|'thursday'|'friday'|'saturday'|'sun'|'mon'|'tue'|'wed'|'thu'|'fri'|'sat'|'sun'应该是以当前时间往后推7*24小时来考量的。本例中,如果你想特指本周的某个星期一,你可以使用strtotime("-1weekMondaythisweek");,其它的天,类似地,指定是在哪个自然周内(本例即thisweek指定为本自然周),不要让系统自己按自己默认的逻辑处理即可。注意:回答问题时是周二。

紫衣仙女

这个并不是bug,php的官方手册中其实就提到过与之类似的一些情况。有些情况下出现strtotime("1months")并不是下个月,而是下下个月了。具体可以翻一下文档手册.就知道为什么这么处理了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript