为了账号安全,请及时绑定邮箱和手机立即绑定

php strtotime是否有bug

php strtotime是否有bug

慕尼黑5688855 2019-04-16 20:27:03
$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(错误)//以上案例都是在今天测试(非周末因为周末)
查看完整描述

2 回答

?
梦里花落0921

TA贡献1772条经验 获得超5个赞

你可以通过阅读相关实现源码来理解为什么会有这样的结果: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指定为本自然周),不要让系统自己按自己默认的逻辑处理即可。
注意:回答问题时是周二。
                            
查看完整回答
反对 回复 2019-04-16
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

这个并不是bug,php的官方手册中其实就提到过与之类似的一些情况。有些情况下出现strtotime("1months")并不是下个月,而是下下个月了。具体可以翻一下文档手册.就知道为什么这么处理了。
                            
查看完整回答
反对 回复 2019-04-16
  • 2 回答
  • 0 关注
  • 338 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信