Java 中 YYYY-MM-dd 在跨年時的致命問題

最近在V站知乎都看到一個討論很有意思,故做一下筆記。

問題描述

在跨年期間,如果在日期格式化的時候使用 YYYY 來格式化年份,則可能會出現(xiàn)下圖所示的bug:

BUG

根本原因

YYYY 在官方文檔中的解釋是 week-based-year,表示當(dāng)天所在的周屬于的年份,一周從周日開始,周六結(jié)束,只要本周跨年,那么這周就算入下一年。所以2019年12月31日那天在這種表述方式下就已經(jīng)是 2020 年了。而當(dāng)使用 yyyy 或者 uuuu 的時候,就還是 2019 年。

總結(jié)

u year
y year-of-era
Y week-based-year,表示當(dāng)天所在的周屬于的年份

u 與 y 在公元后的年份表示沒有區(qū)別,在公元前的年份表示有正負號的差別。所以建議平時時期格式化的時候使用 yyyy-MM-dd 或者 uuuu-MM-dd。

參考資料


文章標題:Java 中 YYYY-MM-dd 在跨年時的致命問題
文章作者:Ciel Ni
文章鏈接:http://www.cielni.com/2020/01/10/java-date-format/
有問題或建議歡迎與我聯(lián)系討論,轉(zhuǎn)載或引用希望標明出處,感激不盡!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容