Sta*_*yuk 9 java timezone-offset java-8 java-time
我需要将以下格式的String解析为2015-01-15-05:00UTC中的LocalDate(或其他).问题是以下代码:
System.out.println(LocalDate.parse("2015-01-15-05:00", DateTimeFormatter.ISO_OFFSET_DATE));
Run Code Online (Sandbox Code Playgroud)
输出2015-01-15忽略偏移量.期望的输出是2015-01-16
提前致谢!
最简单的答案是用来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();
Run Code Online (Sandbox Code Playgroud)
ZonedDateTime如果处理时区很有用,但是当你只处理偏移时,OffsetDateTime则更简单.
通常,应用程序代码不应包含类型的变量TemporalAccessor.如果你看到这一点,通常会有更好的方法.
| 归档时间: |
|
| 查看次数: |
3558 次 |
| 最近记录: |