1. ホーム
  2. java-8

InstantからLocalDateへの変換方法

2023-09-01 18:47:11

質問

私は Instant であるはずのソースから、仕様によれば LocalDate であるはずのソースから来るのですが LocalDate クラスには InstantLocalDate .

どのような方法があるのでしょうか?

どのように解決するのですか?

Java 9 以上

LocalDate.ofInstant(...) がJava 9で到着しました。

Instant instant = Instant.parse("2020-01-23T00:00:00Z");
ZoneId zone = ZoneId.of("America/Edmonton");
LocalDate date = LocalDate.ofInstant(instant, zone);

参照 IdeOne.comで実行されているコード .

このコードは の日付が 23 日ではなく 22 日であることに注意してください。 というのは、そのタイムゾーンはUTCの数時間前のオフセットを使っているからです。

2020-01-22

Java 8

もし、Java 8を使用しているのであれば、以下のように ZonedDateTime 's toLocalDate() メソッドを使用します。

yourInstant.atZone(yourZoneId).toLocalDate()