私は 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のメイン作者でした