我有这段代码:
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern(DateType.DATE_FORMAT)
.appendOffset("+HH:mm", "+00:00")
.toFormatter();
ZonedDateTime.parse("2018-06-09T14:09:30.020+03:00[Europe/Tallinn]", formatter);
DateType.java
:
public class DateType {
public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
public static final String DATE_TIME_ZONE_FORMAT = DATE_FORMAT + "XXX";
}
但是,我运行此代码,我有错误:
java.time.format.DateTimeParseException: Text '2018-06-09T14:09:30.020+03:00[Europe/Tallinn]' could not be parsed at index 10
据我了解,这是因为格式化程序。可能有什么不对?
答案 0 :(得分:3)
我想知道为什么你没有尝试默认解析器。我认为它按预期工作。
String dateTime = "2018-06-09T14:09:30.020+03:00[Europe/Tallinn]";
ZonedDateTime z = ZonedDateTime.parse(dateTime);
System.out.println(z);
答案 1 :(得分:2)
可能出现什么问题?
我会说,无论你在索引10找到什么,正如错误信息所说的那样。 'T'是错的。因为你从来没有在DATE_FORMAT中提到过,所以你有空格。
在出现此问题之后,您会遇到以下问题:除了偏移量之外,您的String还包含时区名称,格式化程序未通知该名称。
正如另一个答案所说,这些问题可以通过依赖默认解析器来解决,因为他们理解这种格式。