大家可以试一下,
$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周,这是为什么
大家可以试一下,
$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周,这是为什么
看文档可知W
的星期是按照ISO-8601标准来的,也就是1月4日所在的星期是一年的第一个星期(或者一年的第一个星期四所在的星期是第一个星期,这两个说法是等价的)。如果要用W
,那么年应该用o
而不是Y
。
4 回答13.3k 阅读✓ 已解决
5 回答7.8k 阅读✓ 已解决
1 回答1.5k 阅读✓ 已解决
1 回答973 阅读✓ 已解决
1 回答1.4k 阅读
1 回答1.5k 阅读
2 回答1k 阅读
这个不是bug,出现这样的原因是因为,在判断某一天是哪一年的第几周的时候,根据采用的国际标准《数据存储和交换形式·信息交换·日期和时间的表示方法》,年首或者年末的那几天有可能不属于今年的第一周或者最后一周。18年12月31是周一,不属于18年的最后一周,而是属于19年的第一周