今天维护的一个系统,突然有人告诉我,系统的周限制失效了。而实际上,这一块代码,我们并没有什么变动,感到很奇怪。于是去追了一下,发现周限制真的失效了。
查看代码,发现Date("Ym", time())这句代码获取的week(1年终的第几周,获取的数值有问题),然后发现这周刚刚好是1年中的最后一周(2013年12月30日)。
于是在官网查看了Date相关的函数来源W字符追加与PHP4.1版本。
但是,这里官方的文档是记录了这个bug的,只会在计算1年的第一周和最后一周会有错误。
而且,PHP官方还在PHP5.1专门追加了一个解决方案,就是使用date("oW")来替换date("YW")
至此,问题找到并且解决了。
这是一个不容易被察觉的深坑啊。