周数格式为 {YYYY}W{WW} 的 strftime 给出了错误的周

kur*_*sus 5 php

我正在尝试使用 strftime 转换 {YYYY}W{WW} 字符串,正如这个答案所解释的那样。

但是它总是给 W-1 :

echo $date = utf8_encode(strftime('%B %Y, week %W', strtotime('2015W38')));
// this will echo "September 2015, week 37"
// but should echo "September 2015, week 38"
Run Code Online (Sandbox Code Playgroud)

我该如何正确纠正这个问题?

PHP 版本:5.6.9

vlp*_*vlp 3

时间

ISO 年份与 ISO 周 YY“-”?“W”W“2008W27”、“2008-W28”

时间

%WA 一年中第几周的数字表示,从第一个星期一开始为第一周 46(以星期一开始的一年中的第 46 周)

%V ISO-8601:1988 给定年份的周数,从一年中的第一周开始,至少有 4 个工作日,星期一是 01 到 53 周的开始(其中 53 表示重叠周)

所以也许你应该使用

echo $date = utf8_encode(strftime('%B %Y, week %V', strtotime('2015W38')));
Run Code Online (Sandbox Code Playgroud)

声明:我不熟悉php,所以请验证我的想法。

编辑>

正如 @syck 所补充的:ISO 8601 从 01 开始计算周,第一周是包含一年中第一个星期四的周(请参见此处)。