web-dev-qa-db-ja.com

Java 8-LocalDateをZonedDateTimeに変換

Java.timeパッケージは初めてです。 LocalDate 2015-12-10があります。これをZonedDateTimeに変換する必要があります。時間は00:00:00で、ゾーンはZoneOffset.UTCである必要があります。

変換後、ZonedDateTimeは2015-12-10T00:00:00 + 02:00になります。

LocalDateをstartDateという変数に格納しています。

私は試した:

ZonedDateTime.ofInstant(Instant.from(startDate), ZoneOffset.UTC)

しかし、エラーが発生します

Java.time.DateTimeException:TemporalAccessorからInstantを取得できません:2015-12-10タイプのJava.time.LocalDate]

私も試しました:

startDate.atStartOfDay().atZone(ZoneOffset.UTC)

これにより、予期しない結果が生じます。

APIを見て、他のいくつかのメソッドを試しましたが、これまでのところ運はありません。

LocalDateをZonedDateTimeに変換する他の方法はありますか?

19
SelfTaught

特定性の低いオブジェクトを特定性の高いオブジェクトに変換する場合は、「at」メソッドを使用します。

ZonedDateTime zdt = startDate.atStartOfDay(ZoneOffset.UTC);

ただし、UTCオフセットを渡すと、結果が+02:00になりません。これは、他の何かを達成しようとしていることを示しています。

34
JodaStephen

私は問題がもう関連していないと思うが、グーグルの目的のために:

  LocalDate localDate = LocalDate.parse("2017-07-22");      
  ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault());
  // => 2017-07-22T00:00+05:30[Asia/Kolkata]

ソース https://beginnersbook.com/2017/10/Java-convert-localdate-to-zoneddatetime/

2
Luc S.