我有几个函数需要在几周内来回切换。
我发现的一个令人惊讶且不受欢迎的行为是:
$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
我的期望是:
201501
201352
三个问题:
1)我在上面的代码中做错了什么,或者“+1周”和“-1周”之间是否存在不一致的行为(如在第一种情况下年份没有被步进)?
评论回复:
它永远不会增加/减少年份,但第 1 周恰好从 2013 年 12 月开始,因此在“-1 周”示例中,它似乎减少了年份。
2) 如果存在不一致,我可以相信代码在不同平台和 PHP 版本上都能正常工作吗?
答案:
没有不一致之处(参见已接受的答案)
3)是否有更好的方法可以在时间上前后移动 1 周(输入是年和周,输出也是年和周)?
奖励问题)如果确实存在不一致,有人知道为什么吗?
答案:
没有不一致之处,请参阅第 1 条答案的解释
最佳答案
- Y 是自该日期起的年份
- o 是 ISO-8601 年份编号
- W 是 ISO-8601 一年中的周数
如果使用“W”表示周数,则使用“o”表示年份。
关于php - 日期时间,+1 周和 -1 周工作方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21961351/