特定の形式でフォーマットしよInstant
うとしています。ここの質問に基づいてString
インスタントを文字列にフォーマットする、私はこれをやっています -
DateTimeFormatter formatter = DateTimeFormatter
.ofPattern("YYYY-MM-DD'T'hh:mm'Z'")
.withZone(ZoneOffset.UTC);
// Fails for current time with error 'Field DayOfYear cannot be printed as the
// value 148 exceeds the maximum print width of 2'
LocalDateTime
.ofInstant(Instant.now(), ZoneOffset.UTC)
.format(DATE_TIME_FORMATTER);
// But works for smaller values of Instant
LocalDateTime
.ofInstant(Instant.ofEpochMilli(604800000), ZoneOffset.UTC)
.format(DATE_TIME_FORMATTER));
なぜこのようなことが起こるのか、何かアドバイスはありますか?
ありがとう
ベストアンサー1
パターンYYYY-MM-DD'T'hh:mm'Z'
が間違っています:
YYYY
- 週ベースの年 間違い:使用するuuuu
年MM
- 月DD
- 年内の日 間違い:使用するdd
月日hh
- 午前午後の時刻(1~12)AM/PMなしHH
時間 (0-23)mm
- 1時間の分
奇妙なことに、正しいパターン文字を含むリンクを参照しています。もちろん、大文字と小文字は関係ないと思っていたのなら別ですが、もしそうなら、MM
(月)とmm
(分)はどのように機能すると考えていましたか?
実際に読んでみるといいかもしれませんドキュメンテーション。