使用Year计算PHP中的周数,这是一个错误吗?

sau*_*lob 7 php

这很奇怪,我不知道这是不是一个bug,但请有人尝试一下.

在PHP上做到这一点

echo date("Y-W",strtotime("2014W05 -1 weeks"));
Run Code Online (Sandbox Code Playgroud)

结果将是2014-04,对吗?今年WEEKNUMBER.没问题.但现在,试试这个:

echo date("Y-W",strtotime("2014W02 -1 weeks"));
Run Code Online (Sandbox Code Playgroud)

为什么是2013-01,为什么是2013?怎么了?它应该是2014-01,对吗?

我做错了什么?这是一个错误吗?

我的PHP版本:5.4.22

Ham*_*mza 10

Y is year from the date
o is ISO-8601 year number
Run Code Online (Sandbox Code Playgroud)

所以如果你这样做的话

echo date("o-W",strtotime("2014W05 -1 weeks"))."<br/>";

echo date("o-W",strtotime("2014W02 -1 weeks"));
Run Code Online (Sandbox Code Playgroud)

你会得到

2014-04
2014-01
Run Code Online (Sandbox Code Playgroud)

贾斯珀编辑

因为日期是一个时刻而不是一个星期,所以您要求一周并获得该周的第一个时刻.根据标准,周数基于周四所在的年份.因此,周数为1,但日期仍为2013年.

  • 以为我会详细介绍一下*为什么*这会给出错误的日期.如果你愿意,可以随意复制我的信息的任何部分(如果我的冗余,我将删除它) (4认同)