往期熱門文章:
昨天聽一同事講到自己的項目中因為格式化時間用到了”YYYY-MM-dd”,元旦當天被喊回去改Bug,到底是怎麼回事哪?
我們先看一下什麼情況!



可以看出上述的幾個時間都出現了問題!連某大廠的手環也沒逃過命運啊!
一、問題復現:
注意:JDK測試版本為1.7

執行結果:

可以看出來使用”YYYY-MM-DD”格式化時間出現了錯誤!
二、具體是什麼原因哪?
這是因為Java語言中在特定的時間或者數字等數據上,平時你感覺一切都OK!但是在特定時間、特定環境就會出問題的情況!剛好格式化時間就算其中的一個!
2020年跨年的時候剛好是2019和2020交換的時候,於是就出現了格式化時間的問題,歸其原因就是使用了”YYYY-MM-dd”格式化時間!
YYYY 是 week-based-year,現在就已經 2020 年了,yyyy 還是 2019 年!
Java聖經表示:
YYYY 表示:當天所在的周屬於的年份,一週從週日開始,週六結束,只要本週跨年,那麼這周就算入下一年。
三、總結:
不論你是否也經歷了這樣的Bug,希望看到這篇文章之後,對這個細節可以上點心,避免日後因為這個細節而犯錯。
開發中還是用yyyy-MM-dd來做日期格式化,其它的就不要用了!
往期熱門文章:
1、Stack Overflow上188W+程序員都關注的問題:Java到底是值傳遞還是引用傳遞?
