我正在尝试使用 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
时间:
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 开始计算周,第一周是包含一年中第一个星期四的周(请参见此处)。