Java 8の新しいDateTime APIを使用しています。
LocalDateをインスタントに変換する方法は?私は例外を取得します
LocalDate date = LocalDate.of(2012, 2, 2);
Instant instant = Instant.from(date);
理由がわかりません。
それをインスタントに変換するには、LocalDateTimeインスタンスが必要です、例えば:
LocalDate.now().atStartOfDay().toInstant(ZoneOffset.UTC)
Instant
クラスは、タイムライン上の瞬間的なポイントを表します。 LocalDate
との間の変換にはタイムゾーンが必要です。他のいくつかの日時ライブラリとは異なり、JSR-310はタイムゾーンを自動的に選択しないため、指定する必要があります。
LocalDate date = LocalDate.now();
Instant instant = date.atStartOfDay(ZoneId.systemDefault()).toInstant();
この例では、JVMのデフォルトのタイムゾーン-ZoneId.systemDefault()
-を使用して変換を実行します。関連する質問の 長い回答 については、こちらをご覧ください。
更新:受け入れられた回答は、ZoneOffset
のみを受け入れるLocalDateTime::toInstant(ZoneOffset)
を使用します。この回答では、ZoneId
を受け入れるLocalDate::atStartOfDay(ZoneId)
を使用しています。そのため、この答えは一般的にはより有用です(おそらく受け入れられるべきでしょう)。
PS。私はAPIの主要著者でした