特定のパターンでインスタントを文字列にフォーマットする 質問する

特定のパターンでインスタントを文字列にフォーマットする 質問する

特定の形式でフォーマットしよ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(分)はどのように機能すると考えていましたか?

実際に読んでみるといいかもしれませんドキュメンテーション

おすすめ記事