2011-09-30 82 views
7

我遇到了一個有趣的問題,使用PHP的date()函數。沒有任何運氣在SO或使用Google上討論過這個問題,但也許別人之前遇到過同樣的問題?從PHP的日期(一週)開始,每週跨越兩年

我想獲得給定時間戳的年份和年的周。這是我使用的代碼:

date("Y-\WW");

哪像今天的正確輸出:2011-W39

問題是提供時間戳時,如果問題的時間戳是,例如,2011年1月3日(實際上它是「2010年第52周」的一部分.PHP正確返回W52,但它也返回如2011年,而不是2010年

​​

輸出:2011-W52

如何解決這個問題的任何想法,我要指出的是,儘管在這種情況下,它會很容易只比較了嗎?輸出的strtotime()大於當前的time()並進行調整,但我需要一個可用於前幾年的解決方案(例如,如果2010年1月3日發生同樣的事情)。

+2

我只是測試['日期( 「Y- \ WW」,1294016400)'在IDEOne,我得到'2011-W01 '](http://ideone.com/HWyeo)。 – JRL

+0

這可能是一個時區或地區的事情。我已經回答了下面的問題,我應該使用新添加的「o」而不是「Y」。 –

回答

23

織補,顯然我沒有重新讀取文檔不夠緊密,這封信在PHP 5.1.0中加入o

從文檔date()

ISO-8601年數。這與Y的值相同,只是如果ISO週數(W)屬於上一年或下一年,則使用該年。 (在PHP 5.1.0添加)

所以我的代碼應該已經date("o-\WW");

+1

當我遇到這個問題時,我無法夢想以完全相同的關注和這樣一個簡單的答案找到一個SO問題(我沒有仔細閱讀文檔)。非常感謝 ! – neemzy

相關問題