web-dev-qa-db-ja.com

Java.time.LocalDateをJava.util.Date型に変換します

Java.time.LocalDateJava.util.Date typeに変換したいのですが。日付をJDateChooserに設定したいからです。または Java.time datesをサポートする日付選択ツールはありますか?

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

それはあなたの日付選択が日付を文字列に変換するためにシステムデフォルトタイムゾーンを使用すると仮定します。

468
JB Nizet

これは私が新しいJava.timeクラスをJava.util.Dateオブジェクトに、またその逆に変換するために使用するユーティリティクラスです。

import Java.time.Instant;
import Java.time.LocalDate;
import Java.time.LocalDateTime;
import Java.time.ZoneId;
import Java.util.Date;

public class DateUtils {

  public static Date asDate(LocalDate localDate) {
    return Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
  }

  public static Date asDate(LocalDateTime localDateTime) {
    return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
  }

  public static LocalDate asLocalDate(Date date) {
    return Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDate();
  }

  public static LocalDateTime asLocalDateTime(Date date) {
    return Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDateTime();
  }
}

@Olivのコメントに基づいて編集しました。

91
Brice Roncace

Java.sql.Date.valueOf()メソッドは次のように使用できます。

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

ここには時間と時間帯の情報を追加する必要はありません。それらは暗黙のうちに取られるからです。
LocalDateからJava.util.Dateへの変換およびその逆の最も簡単な変換を参照してください。

81
George

Java.timeにはTemporalインタフェースがあり、ほとんどの時間クラスからInstantオブジェクトを作成するのに使用できます。 Instantは、Epochのタイムライン上のミリ秒を表します。他のすべての日付と時刻の基本参照です。

変換を行うには、TimeをZoneとZoneでZonedDateTimeに変換する必要があります。

LocalDate ldate = ...;
Instant instant = Instant.from(ldate.atStartOfDay(ZoneId.of("GMT")));
Date date = Date.from(instant);
14
Kevin Sadler

Java.time.LocalDate から Java.util.Date を作成するためには、

  • LocalDate に時間を追加する
  • タイムゾーン内の日付と時刻を解釈する
  • エポック からの経過秒数/ミリ秒数を取得する
  • Java.util.Dateを作成します

コードは次のようになります。

LocalDate localDate = LocalDate.now();
Date date = new Date(localDate.atStartOfDay(ZoneId.of("America/New_York")).toEpochSecond() * 1000);
12
nosid

これは私のために働く:

Java.util.Date d = new SimpleDateFormat("yyyy-MM-dd").parse(localDate.toString());

https://docs.Oracle.com/javase/8/docs/api/Java/time/ LocalDate.html#toString--

10
ceklock

コトリンソリューション:

1)この拡張機能をどこかに貼り付けます。

fun LocalDate.toDate(): Date = Date.from(this.atStartOfDay(ZoneId.systemDefault()).toInstant())

2)それを使用し、二度とこれをグーグルしないでください。

val myDate = myLocalDate.toDate()
3
gyoder