php date 是如何计算第几周的,php是不是有BUG?

大家可以试一下,

$str = strtotime("2018-12-31");
echo date('Y', $str), date('W', $str);
echo '
';
$str = strtotime("2015-12-31");
echo date('Y', $str), date('W', $str);

2018-12-31 求出的是 第1周, 2015-12-31 求出的是第53周,这是为什么

阅读 5.9k
2 个回答

这个不是bug,出现这样的原因是因为,在判断某一天是哪一年的第几周的时候,根据采用的国际标准《数据存储和交换形式·信息交换·日期和时间的表示方法》,年首或者年末的那几天有可能不属于今年的第一周或者最后一周。18年12月31是周一,不属于18年的最后一周,而是属于19年的第一周

看文档可知W的星期是按照ISO-8601标准来的,也就是1月4日所在的星期是一年的第一个星期(或者一年的第一个星期四所在的星期是第一个星期,这两个说法是等价的)。如果要用W,那么年应该用o而不是Y

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏