我正在嘗試將 offsetdatetime 轉換為特定格式,但我遇到了問題
OffsetDateTime.parse("2021-12-27T15:49:08Z")
.format(DateTimeFormatter.ofPattern("EEE dd MMM YYYY, h:mm:ss"))
它又列印了一年
lun. 27 dic. 2022, 3:49:08
是什么原因?
多謝
uj5u.com熱心網友回復:
這是因為您正在指定YYYY年份的模式。
根據檔案java.time.format.DateTimeFormatter,一個或多個Ys的模式表示“基于周的年份”。
這與通常的“時代”不同,您可以從一個或多個小寫 ys的模式中獲得。
這個問題解釋了差異。基本上,如果一年從一周的中間開始,它會將整周視為前一年或下一年的下降。
確切的計算將間接取決于語言環境,因為它控制一周從哪一天開始。(我并不完全了解所有細節,但我認為這是由WeekFields班級調解的。無論它如何起作用,它都可能導致 2021 年的最后幾天被視為 2022 年的一部分,正如這個問題所表明的那樣。)
無論如何,當您只想要正常的日歷年時,您的真正問題似乎是使用基于周的年數!因此,只需將您的模式更改為"EEE dd MMM yyyy, h:mm:ss",您應該會得到預期的結果:
lun. 27 dic. 2021, 3:49:08
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/409905.html
標籤:
