Java.time.LocalTime
オブジェクトをJava.util.Date
に変換しようとしていますが、適切なメソッドが見つかりません。これを行う正しい方法は何ですか?
Javaに組み込みの直接変換メソッドが同梱されていないように見える理由はありますか?
可能な重複へ:
joda時間を変換する方法 -うまくいきません。おそらく「joda」ライブラリがいくつか不足しています。
日付をローカルタイムに変換する方法? -これは、逆の変換を行います。
LocalTimeは、DateTimeのtime部分のみを含むため、実際にはDateに変換できません。 11:00のように。しかし、日は知られていない。手動で指定する必要があります。
LocalTime lt = ...;
Instant instant = lt.atDate(LocalDate.of(A_YEAR, A_MONTH, A_DAY)).
atZone(ZoneId.systemDefault()).toInstant();
Date time = Date.from(instant);
これは、新旧のAPI間の すべての変換について説明 のブログ投稿です。
これらのAPIは完全に異なる方法で日付と時刻の概念にアプローチするため、単純な組み込みの変換メソッドはありません。
LocalTime lt = ...;
Instant instant = lt.atDate(LocalDate.of(A_YEAR, A_MONTH, A_DAY)).
atZone(ZoneId.systemDefault()).toInstant();
Date time = Date.from(instant);
ここに別のアプローチがあります:
次のように、LocalDateをLocalTimeに追加してLocalDateTimeにし、Java.sql.TimestampのvalueOfメソッドを使用してそれをDateに変換できます。
LocalTime localTime = LocalTime.now();
Date date = Java.sql.Timestamp.valueOf(localTime.atDate(LocalDate.now()));