获得1月份的周数不规则输出

时间:2015-12-11 07:13:31

标签: php strtotime

有人可以解释为什么会这样吗?

<?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,前两种情况都是如此,但第三种情况则不然。

2 个答案:

答案 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 的最后一周,因为那一周从该年开始,所以结果是正确的。