JavaFX datepickerから値を取得し、その値をDateオブジェクトとして保存したい:
final DatePicker datePicker = new DatePicker(LocalDate.now());
Date date = datePicker.getValue();
grid.add(datePicker, 1, 9);
LocalDate
をDate
に変換する方法を教えてください。
名前が示すように、LocalDateはタイムゾーンも時刻も格納しません。したがって、絶対時間に変換するには、タイムゾーンと時刻を指定する必要があります。両方を実行する簡単なメソッド、atStartOfDay(ZoneId)があります。ここでは、コンピュータのローカルタイムゾーンであるデフォルトのタイムゾーンを使用します。これにより、時間を表すインスタントオブジェクトが得られます。最後に、Java 8は、インスタントから構築するために日付にファクトリメソッドを追加しました。
LocalDate localDate = datePicker.getValue();
Instant instant = Instant.from(localDate.atStartOfDay(ZoneId.systemDefault()));
Date date = Date.from(instant);
System.out.println(localDate + "\n" + instant + "\n" + date);
これにより、以下のような出力が得られます。インスタントはデフォルトでUTCで印刷されることに注意してください。
2014-02-25
2014-02-25T06:00:00Z
Tue Feb 25 00:00:00 CST 2014
もちろん、DatePickerに値を設定するには、Java.util.DateをJava.time.LocalDateに変換する必要があります。そのためには、次のようなものが必要になります。
Date date = new Date();
Instant instant = date.toInstant();
LocalDate localDate = instant.atZone(ZoneId.systemDefault()).toLocalDate();
System.out.println(date + "\n" + instant + "\n" + localDate);
次のような出力が得られます:
Tue Feb 25 08:47:04 CST 2014
2014-02-25T14:47:04.395Z
2014-02-25
または、最も簡単な方法を使用できます
Java.sql.Date gettedDatePickerDate = Java.sql.Date.valueOf(myDatePicker.getValue());
そして、この日付オブジェクト内で操作を実行できます。
に変換 Java.util.Date
私はIDEを手元に持っていませんが、これでうまくいくはずです。
Date date = new Date(datePicker.getvalue().toEpochDay());
または代わりに。
LocalDate ld = datePicker.getValue();
Calendar c = Calendar.getInstance();
c.set(ld.getYear(), ld.getMonthValue(), ld.getDayOfMonth());
Date date = c.getTime();
LeonidasCZの答えは100%正しくありません:_Java.util.Date
_月の範囲は0〜11ですが、Calendar.getInstance()
は1〜12なので、次のようにできます:
_LocalDate ld = datePicker.getValue();
Calendar c = Calendar.getInstance();
c.set(ld.getYear(), ld.getMonthValue() - 1, ld.getDayOfMonth());
Date date = c.getTime();
_
時間、分、秒も追加したい場合:
_LocalDate ld = datePicker.getValue();
Calendar c = Calendar.getInstance();
c.set(ld.getYear(), ld.getMonthValue() - 1, ld.getDayOfMonth(), hours, minutes, seconds);
Date date = c.getTime();
_