首页

php用strtotime("monday")获取周一产生的bug

使用php的时候经常要处理时间,php语言自带了很多好用的日期函数。用得比较频繁的就是date和strtotime。 最近项目上有要按周来取数据的需求,我采取的是取大于等于(>=)周一然后小于(<)下周一的做法,周一的日期本来可以根据date("w")获取当前是周几,然后获得当天凌晨的时间再根据时间戳加减推移时间来获取。然而我知道strtotime其实支持直接获取一周中的任意时间戳,比如strtotime("monday")就是周一的时间戳,strtotime("tuesday")就是周二......以此类推。 因为没有经常这么用,实践中发现比如strtotime("monday")实际上获取的是下周一的时间戳,strtotime("-1 monday")是本周,于是便按这个思路写完测试没问题就提交了。没想到周一的时候测试一直反馈数据不对,我查了逻辑发现确实是我返回的数据问题,一番捣鼓后恍然大悟: strtotime("-1 monday")取的是【上个周一】,strtotime("monday")取的是【下个周一】。<span style="color:red">如果当天的时间正好是星期一那么strtotime("-1 monday")不会取到当天的时间而是取到上周的周一。</span>这样bug就产生了,果然还是要多实践,项目着急的时候尽量不要用自己不熟悉或者没有把握的东西。
更多>>
关于谷歌chrome输入域名默认跳https的问题 laravel全局中间件 centos7用yum命令的时候报错Peer's Certificate has expired php laravel文件上传时接收文件大小为0 为什么苹果开发者不续费了会影响已经上架的app内购?