LocalDateをInstantに変換するにはどうすればいいですか? 質問する

LocalDateをInstantに変換するにはどうすればいいですか? 質問する

私は Java 8 の新しい DateTime API を使用しています。

LocalDateをInstantに変換するにはどうすればいいですか?例外が発生します

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

なぜなのか理解できません。

ベストアンサー1

クラスInstantは、タイムライン上の瞬間的なポイントを表します。 との変換にはLocalDateタイムゾーンが必要です。他の日付および時刻ライブラリとは異なり、JSR-310 はタイムゾーンを自動的に選択しないため、タイムゾーンを指定する必要があります。

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

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


更新: 受け入れられた回答では、LocalDateTime::toInstant(ZoneOffset)のみを受け入れる which を使用していますZoneOffset。この回答では、LocalDate::atStartOfDay(ZoneId)のいずれかを受け入れる which を使用していますZoneId。そのため、この回答の方が一般的には有用です (おそらく受け入れられる回答になるはずです)。

追伸:私はAPIのメイン作者でした

おすすめ記事