2015-10-09 43 views
4

我試圖用strftime轉換{YYYY} W {WW}字符串,如解釋是this answerstrftime與星期編號格式{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" 

我怎樣才能正確地糾正呢?

PHP版本:5.6.9

+0

請確保您指定一個明確的輸入** **和** **輸出,你的問題ISN不清楚這一點。 –

+0

如果我明白你說的正確,輸出是第二行代碼。 – kursus

+0

** //給出2015年9月,第37周**這是預期產出? –

回答

2

strtotime

ISO一年ISO周YY 「 - 」? 「W」 W 「2008W27」, 「2008-W28」

strftime

%W一年中的一週的數字表示,開始與 第一個星期一作爲第一週46(全年 的第46周與週一開始)

%V ISO-8601:1988的週數定年起,就以今年 第一週至少4個工作日,週一作爲 星期一至五的開始3(其中53個佔重疊 周)

那麼可能是你應該使用

echo $date = utf8_encode(strftime('%B %Y, week %V', strtotime('2015W38'))); 

Desclaimer:我不精通用PHP,所以請不要驗證了我的想法。

編輯>

由於@syck補充說:ISO從01 8601數週,第一週是一個與當年在它第一個星期四(見here)。

+0

就是這樣,謝謝。 – kursus

+0

爲了完整性:_01周的ISO 8601定義是年度第一個星期四的星期._ – syck

0

必須更換%W和%V

2

這按預期工作:

$year = "2015"; // Year 2015 
$week = "38"; // Week 38 
$date1 = date("F Y, W", strtotime($year."W".$week)); 
echo $date1; 
//September 2015, 38 
相關問題