从包含毫秒的字符串中解析ZonedDateTime

时间:2019-06-21 07:50:33

标签: java java-8 java-date

我需要从以下格式的字符串中获取ZonedDateTime:

"26.06.2019T00:00:00.123+03:00"

这种格式似乎是一种标准格式,因此我使用以下代码从字符串中解析ZonedDateTime:

ZonedDateTime.parse("26.06.2019T00:00:00.123+03:00");

但是,我得到一个例外:

Exception in thread "main" java.time.format.DateTimeParseException: Text '26.06.2019T00:00:00.123+03:00' could not be parsed at index 0

1 个答案:

答案 0 :(得分:4)

您使用的格式不是标准格式,因为您使用dd.mm.yyyy作为日期而不是yyyy-mm-dd。因此,它不适用于parse()使用的默认格式化程序。

您可以为特殊情况轻松设置自定义DateTimeFormatter

String pattern = "dd.MM.yyyy'T'HH:mm:ss.SSSXXX";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);

String input = "26.06.2019T00:00:00.123+03:00";
ZonedDateTime zonedDateTime = ZonedDateTime.parse(input, dtf);

System.out.println(zonedDateTime)的输出是正确的ISO格式:

2019-06-26T00:00:00.123+03:00

根据Jesper's comment,我建议您使用实际的标准格式,并尝试说服提供此字符串的人也要使用实际的ISO格式。