(Java 8で導入された)LocalDate
をJava.util.Date
オブジェクトに変換する簡単な方法はありますか?
'simple'とは、これよりも単純なことを意味します。
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
これは私にとって少し厄介に思えます。
日付部分だけに関心があり、どちらのオブジェクトにもタイムゾーン情報がないため、なぜタイムゾーンを明示的に導入するのでしょうか。変換には、深夜0時とシステムのデフォルトのタイムゾーンを暗黙的に使用する必要があります。
実際にあります。 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();
日付 - >ローカル日付:
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate - >日付:
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
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());
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);