格式化時間用了YYYYMMdd,元旦當天老闆喊我回去改Bug!

NO IMAGE

往期熱門文章:

1、《往期精選優秀博文都在這裡了!》

2、39 個奇葩代碼註釋,看完笑哭了。。。

3、牛逼的人,都已經開始用文言文寫代碼了!

4、如何優雅地根治null值引起的Bug!

5、答應我,別再if/else走天下了可以嗎?


昨天聽一同事講到自己的項目中因為格式化時間用到了”YYYY-MM-dd”,元旦當天被喊回去改Bug,到底是怎麼回事哪?

我們先看一下什麼情況!

格式化時間用了YYYYMMdd,元旦當天老闆喊我回去改Bug!
格式化時間用了YYYYMMdd,元旦當天老闆喊我回去改Bug!
格式化時間用了YYYYMMdd,元旦當天老闆喊我回去改Bug!

可以看出上述的幾個時間都出現了問題!連某大廠的手環也沒逃過命運啊!

一、問題復現:

注意:JDK測試版本為1.7

格式化時間用了YYYYMMdd,元旦當天老闆喊我回去改Bug!

執行結果:

格式化時間用了YYYYMMdd,元旦當天老闆喊我回去改Bug!

可以看出來使用”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到底是值傳遞還是引用傳遞?

2、Dubbo必會的18個面試題!一網打盡!

3、可以提高千倍效率的Java代碼小技巧

4、後端開發甩鍋指南!

格式化時間用了YYYYMMdd,元旦當天老闆喊我回去改Bug!

【視頻福利】2T免費學習視頻,搜索或掃描上述二維碼關注微信公眾號:Java後端技術(ID: JavaITWork),和20萬人一起學Java!回覆:1024,即可免費獲取!內含SSM、Spring全家桶、微服務、MySQL、MyCat、集群、分佈式、中間件、Linux、網絡、多線程,Jenkins、Nexus、Docker、ELK等等免費學習視頻,持續更新!

相關文章

推薦一些學習MySQL進階的書籍/資料

頭條面試官:你知道如何實現高性能版本的深拷貝嘛?

2019與我的自由啟蒙

從零搭建完整的React項目模板(Webpack+Reacthooks+Mobx+Antd)【演戲演全套】