日期('W')返回奇怪的周数

时间:2014-02-14 01:23:27

标签: php date strtotime

我有这段代码

$week = date('W', strtotime("2013-12-30"));

和$ week返回01

如果我们在十二月,那该怎么回01?我怎样才能解决这个问题?因为这会影响代码的另一部分,我试图获得每周的星期一:

$monday = date("Y-m-d", strtotime("{$year}-W{$week}-1"));

但是,当我按照那个日期这样做时,它将返回第01周的星期一。

2 个答案:

答案 0 :(得分:3)

date("W")返回iso8601周数。那个日期是明年的第一周。当12月的最后一天属于周中期时,可能会发生这种情况。这也可能发生在12月结束的一周。 1月的前几天可以被视为前一年的一部分。

有关更好的解释,请参阅Week dates in Wikipedia

  

如果1月1日是星期一,星期二,星期三或星期四,则是01周。如果1月1日是星期五,星期六或星期日,则是上一年的第52周或第53周(没有第00周)。 12月28日总是在同一年的最后一周。

答案 1 :(得分:1)

它工作正常。

“周数”有时违反直觉。请参阅“Jimmy”中的说明,了解使用W格式的日期文档:http://www.php.net/manual/en/function.date.php#106974