有人可以解释为什么会这样吗?
<?php
echo date("W", strtotime("2015-01-01"))."<br>"; //returns 1
echo date("W", strtotime("2014-01-01"))."<br>"; //returns 1
echo date("W", strtotime("2016-01-01"))."<br>"; //returns 53
?>
当输出当月的一周的周数时,某些情况下结果不正确。这里的输出,周数是1,前两种情况都是如此,但第三种情况则不然。
答案 0 :(得分:2)
它为"2016-01-01"
输出53而不是1的原因是它计算了2016年第一个星期一的第一周,即2016年1月4日(“2016-01” -04" )。
W ISO-8601周的周数,从周一开始的周数(以PHP格式添加) 4.1.0)示例:42(一年中的第42周)
请参阅php date function here的完整文档。
如上所述, W ISO-8601周数是您获得的数字。
有关 W ISO-8601周年数的详情,请参阅下文,
ISO周编号年份(也称非正式ISO年份)有52或 整整53个星期。那是364或371天而不是通常的365或366天 天。额外的一周在这里被称为闰周,尽管是ISO 8601不使用此术语。周从星期一开始。第一周 一年是包含一年中第一个星期四的一周 (因此,总是包含1月4日)。 ISO周年编号 因此,在接近几天的时间里,格里高利略有偏离 1月1日。
来源:Wiki
答案 1 :(得分:0)
2016-01-01 属于 2015 的最后一周,因为那一周从该年开始,所以结果是正确的。