我需要从以下格式的字符串中获取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
答案 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格式。