1. ホーム
  2. java

[解決済み] LocalDateをInstantに変換する方法は?

2022-04-26 08:16:20

質問

Java 8 の新しい DateTime API を使って仕事をしています。

LocalDateをInstantに変換するには? という例外が発生します。

LocalDate date = LocalDate.of(2012, 2, 2);
Instant instant = Instant.from(date);

と、わけがわからなくなる。

どうすればいい?

その Instant クラスは、時間軸上の瞬間的な点を表します。への変換と LocalDate はタイムゾーンを必要とします。他の日付と時刻のライブラリと異なり、JSR-310はタイムゾーンを自動的に選択しないので、あなたが提供する必要があります。

LocalDate date = LocalDate.now();
Instant instant = date.atStartOfDay(ZoneId.systemDefault()).toInstant();

この例では、JVMのデフォルトのタイムゾーンを使用します。 ZoneId.systemDefault() - を使用して変換を実行します。についてはこちらをご覧ください。 長い回答 に関連する質問です。


更新: 受け入れられた回答は LocalDateTime::toInstant(ZoneOffset) のみを受け付ける。 ZoneOffset . この回答では LocalDate::atStartOfDay(ZoneId) は、任意の ZoneId . そのため、一般的にはこの答えの方が有用です(そしておそらく、この答えが受け入れられるべきでしょう)。

PS. API のメイン作者は私です