「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > java.util.Date を java.time の Instant、OffsetDateTime、または ZonedDateTime に変換するにはどうすればよいですか?

java.util.Date を java.time の Instant、OffsetDateTime、または ZonedDateTime に変換するにはどうすればよいですか?

2024 年 11 月 6 日に公開
ブラウズ:318

How do I convert java.util.Date to java.time\'s Instant, OffsetDateTime, or ZonedDateTime?

最新の java.time フレームワークに移行する際に、java.util.Date を java.time の Instant、OffsetDateTime、または ZonedDateTime に変換します

、従来の java.util.Date オブジェクトを適切な java.time 型に変換する方法を知ることが重要です。等価性の概要は次のとおりです:

java.util.Date から Instant

どちらも UTC での瞬間を表すため、変換は簡単です:

Instant instant = myUtilDate.toInstant();

java.util.Date myUtilDate = java.util.Date.from(instant);

java.util.Date から java.time の OffsetDateTime または ZonedDateTime

タイプにはタイム ゾーン情報が組み込まれており、レガシー日付からゾーンを抽出する必要があります:

// If the legacy date is a GregorianCalendar (which can hold time zone info)
if (myUtilCalendar instanceof GregorianCalendar) {
    GregorianCalendar gregCal = (GregorianCalendar) myUtilCalendar;
    ZonedDateTime zdt = gregCal.toZonedDateTime(); // ZonedDateTime with time zone

    java.util.Calendar myUtilCalendar = java.util.GregorianCalendar.from(zdt);
}

追加の変換マッピング

レガシータイプ同等のjava.time追加Notes
java.util.CalendarInstantUTC での一日の始まりに変換
java.util.GregorianCalendarZonedDateTimeタイムゾーン情報を保持します
java.util.LocalDate ZonedDateTime日付を決定するにはタイム ゾーンが必要です
java.util.LocalTimeInstantに変換しますUTC での 1 日の始まり
java.util.LocalDateTimeZonedDateTime日付と時刻を決定するにはタイムゾーンが必要です

重要な考慮事項

  • java.util.Date から java.time 型に変換すると、精度が失われる可能性があります。ナノ秒の解像度は従来のクラスではサポートされていません。
  • OffsetDateTime または ZonedDateTime に変換する場合、正しい解釈を保証するためにタイム ゾーン情報を保持する必要があります。
  • java.time タイプを使用することを強くお勧めします。新しいコードで精度と一貫性を強化しました。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3