DateTime,+ 1周和-1周不一样

时间:2014-02-22 22:17:37

标签: php datetime

我有几个功能来回徘徊数周。

我发现的一个令人惊讶且不受欢迎的行为是:

$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号答案以获得解释

1 个答案:

答案 0 :(得分:5)

  • Y 是自该日期起的年份
  • o 是ISO-8601年号
  • W 是ISO-8601周的年数

如果在周数中使用'W',则使用年份的'o'。