0

大家可以试一下,

$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周,这是为什么

2018-09-12 提问
2 个回答
1

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

0

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

撰写答案

推广链接