首页 > 解决方案 > 无法从 TemporalAccessor 获取 ZonedDateTime:

问题描述

我有以下格式的日期,我需要对其进行解析并转换为纪元时间。

2018-11-08 08:17:18.696124

我有以下代码。

String dateString = "2018-11-08 08:17:18.696124";
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS");
ZonedDateTime dateTime = ZonedDateTime.parse(dateString, fmt); 

当我运行时,我收到以下错误。

无法解析文本“2018-11-08 08:17:18.696124”:无法从 TemporalAccessor 获取 ZonedDateTime:{},ISO 解析为 java.time.format.Parsed 类型的 2018-11-08T08:17:18.696124

对我在这里做错了什么有任何帮助吗?

标签: java

解决方案


顾名思义,分区日期时间需要一个区域。您的时间戳格式不包括一个,因此解析失败。

您应该解析为 aLocalDateTime然后应用正确的区域。例如:

String dateString = "2018-11-08 08:17:18.696124";
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS");
LocalDateTime dateTime = LocalDateTime.parse(dateString, fmt);
ZonedDateTime london = dateTime.atZone(ZoneId.of("Europe/London"));

推荐阅读