web-dev-qa-db-ja.com

LocalDateからJava.util.Dateへ、およびその逆の変換は最も簡単ですか?

(Java 8で導入された)LocalDateJava.util.Dateオブジェクトに変換する簡単な方法はありますか?

'simple'とは、これよりも単純なことを意味します。

Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());

これは私にとって少し厄介に思えます。

日付部分だけに関心があり、どちらのオブジェクトにもタイムゾーン情報がないため、なぜタイムゾーンを明示的に導入するのでしょうか。変換には、深夜0時とシステムのデフォルトのタイムゾーンを暗黙的に使用する必要があります。

107
George

実際にあります。 Java.sql.Dateオブジェクトには、静的メソッド valueOf があります。だから我々は持っています

Java.util.Date date = Java.sql.Date.valueOf(localDate);

以上です。ローカルタイムゾーンが暗黙的に使用されるため、タイムゾーンの明示的な設定はありません。

ドキュメントから:

提供されたLocalDateは、ローカルタイムゾーンのローカル日付として解釈されます。

Java.sql.DateサブクラスはJava.util.Dateなので、結果もJava.util.Dateになります。

逆の操作のために、Java.sql.Dateクラスに toLocalDate メソッドがあります。だから我々は持っています:

LocalDate ld = new Java.sql.Date(date.getTime()).toLocalDate();

118
George

日付 - >ローカル日付:

LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

LocalDate - >日付:

Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
15
Hai Nguyen

LocalDateまでの日付

Date date = new Date();
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

LocalDate to Date

LocalDate localDate = LocalDate.now();
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
2
fjkjava

LocalDateTimeからJava.util.Dateへの変換

    LocalDateTime localDateTime = LocalDateTime.now();

    ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneOffset.systemDefault());

    Instant instant = zonedDateTime.toInstant();

    Date date = Date.from(instant);

System.out.println("Result Date is : "+date);
0
Simhadri