我有几个功能来回徘徊数周。
我发现的一个令人惊讶且不受欢迎的行为是:
$date = new DateTime();
$date->setISODate(2014, 52);
$date->modify('+1 week');
echo date('YW', $date->getTimestamp()) . '<br />';
$date->setISODate(2014, 01);
$date->modify('-1 week');
echo date('YW', $date->getTimestamp()) . '<br />';
此代码打印:
201401个
201352
我的期望是:
201的 5 01
201352
三个问题:
1)我在上面的代码中做错了什么,或者“+1周”和“-1周”之间是否存在不一致的行为(因为在第一种情况下没有步入年份)?
评论回答:
它永远不会增加/减少年份,但第1周恰好在2013年12月开始,因此它似乎在“-1周”示例中减少了一年。
2)如果存在不一致,我是否可以相信代码在各种平台和PHP版本上的工作方式相同?
答案:
没有不一致(见接受的答案)
3)是否有更好的方法可以及时地向前和向前推进1周(输入是年和周,输出也是年和周)?
红利问题)如果确实存在不一致,有谁知道为什么?
答案:
没有不一致,请参阅第1号答案以获得解释
答案 0 :(得分:5)
如果在周数中使用'W',则使用年份的'o'。