Java 8の新しいDateTime APIを使用しています。
LocalDateをインスタントに変換する方法は?例外が発生します
LocalDate date = LocalDate.of(2012, 2, 2);
Instant instant = Instant.from(date);
理由がわかりません。
Java 8の新しいDateTime APIを使用しています。
LocalDateをインスタントに変換する方法は?例外が発生します
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の主な作者でした
これをインスタントに変換するには、LocalDateTimeインスタンスが必要です。例:
LocalDate.now().atStartOfDay().toInstant(ZoneOffset.UTC)
LocalDate
時間は含まれていません。