­

昨天你用的 YYYY-MM-dd 被捶了嗎?

  • 2020 年 2 月 20 日
  • 筆記

來源:zhuzhiqiang

v2ex.com/t/633650

  • BUG 的表現
  • BUG 的原因
  • 相關資源

昨天在v站上看到這個關於YYYY-MM-dd的使用而出現Bug的問題。在時間、數字等數據上,存在很多類似這種平時一切OK,特定時間、特定環境出問題的情況是非常多的。只是很多時候,我們對於各種細節定義在開始的時候都不太注意,都是從每一次使用問題出現之後才開始有了「刻骨銘心」的認識。

不論昨天你是否也經歷了這樣的Bug,還是沒有經歷的讀者,希望看到這篇文章之後,對這個細節可以上點心,避免日後因為這個細節而犯錯。

下面就來一起看看這個問題的表現和原因吧:

BUG 的表現

BUG 的原因

YYYYweek-based-year,今天就已經 2020 年了

yyyy 還是 2019

YYYY 表示:當天所在的周屬於的年份,一周從周日開始,周六結束,只要本周跨年,那麼這周就算入下一年。

相關資源

  • https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#patterns
  • https://nakedsecurity.sophos.com/2019/12/23/serious-security-the-decade-ending-y2k-bug-that-wasnt/