Java 日期格式中的坑

原文來自 前幾天你因為 YYYY-MM-dd 翻車了嗎?

看完了來看看下面這段代碼解釋:

 /**
 說明:日期格式化時, yyyy 表示當天所在的年,而大寫的 YYYY 代表是 week in which year,意思是當天所在的周屬于的年份,
一周從周日開始,周六結束,只要本周跨年,返回的 YYYY 就是下一年。
 另外需要注意:
 表示月份是大寫的 M
 表示分鐘則是小寫的 m
 24 小時制的是大寫的 H
 12 小時制的則是小寫的 h
 */

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String timeStr = "2019-01-01 00:00:00";
LocalDateTime dateTime = LocalDateTime.parse(timeStr, formatter);

System.out.println(dateTime + "\n" + dateTime.toLocalDate() + "\n" + dateTime.toLocalTime());

輸出

2019-01-01T00:00
2019-01-01
00:00

也就是說:年份如果用 Y 會是這周的年份,y 才是標準的年份。這一點官方文檔沒說明,所以還是自己注意點吧,以后轉換日期格式的時候記得還是用 “yyyy-MM-dd” 這種格式吧,避免出現(xiàn)這種情況衍生的 bug。

規(guī)范的日期格式:

  • 距離現(xiàn)在時間跨年,顯示格式:
    中文:yyyy/mm/dd (2020年06月01日)
    英文:mm dd,yyyy (Jun 1,2020)
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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