最も簡単な答えは、データを表現するためにOffsetDateTime
を使用することですが、あなたは時間をデフォルトする必要があります。時間帯を扱う場合
DateTimeFormatter fmt = new DateTimeFormatterBuilder()
.append(DateTimeFormatter.ISO_OFFSET_DATE)
.parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
.toFormatter();
OffsetDateTime dt = OffsetDateTime.parse("2015-01-15-05:00", fmt);
LocalDate date = dt.withOffsetSameInstant(ZoneOffset.UTC).toLocalDate();
ZonedDateTime
は便利ですが、ときあなたはオフセットを扱うだけです、OffsetDateTime
は簡単です。
一般に、アプリケーションコードには、タイプTemporalAccessor
の変数を含めるべきではありません。あなたがそれを見たら、一般に良い方法があります。
なぜ結果は2015-01-16でなければならないと思いますか?明らかに、あなたは存在しない時計時刻がどんなものであるかについてはっきりと仮定しています(あなたの入力文字列全てについて常に同じです)。私のために、日付はちょうど解析されます:2015-01-15。時間部分がないため、UTCとの接続はありません。 –