无法从TemporalAccessor获取ZonedDateTime:

时间:2018-11-13 11:47:48

标签: java

我有一个以下格式的日期,我需要解析它并将其转换为一个纪元时间。

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

对我在这里做错的任何帮助吗?

1 个答案:

答案 0 :(得分:2)

顾名思义,

一个已分区日期时间需要一个区域。您的时间戳格式不包含一种,因此解析失败。

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

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"));