java.time.format.DateTimeParseException 使用 DateTimeFormatter
java.time.format.DateTimeParseException using DateTimeFormatter
我有这个代码:
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
据我了解,这是格式化程序的问题。有什么问题吗?
我想知道你为什么不尝试默认解析器。我认为它按预期工作。
String dateTime = "2018-06-09T14:09:30.020+03:00[Europe/Tallinn]";
ZonedDateTime z = ZonedDateTime.parse(dateTime);
System.out.println(z);
What could be wrong?
我会说,无论您在索引 10 处找到什么,如错误消息所述。 'T' 出了什么问题。因为你从未在你的 DATE_FORMAT 中提到过一个,所以你有一个 space 而不是。
在这个问题之后,你会遇到这样的问题,即你的字符串除了偏移量之外还包含一个时区名称,而你的格式化程序没有被告知。
正如其他答案所说,这些问题可以通过依赖默认解析器来解决,因为它们理解这种格式。
我有这个代码:
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
据我了解,这是格式化程序的问题。有什么问题吗?
我想知道你为什么不尝试默认解析器。我认为它按预期工作。
String dateTime = "2018-06-09T14:09:30.020+03:00[Europe/Tallinn]";
ZonedDateTime z = ZonedDateTime.parse(dateTime);
System.out.println(z);
What could be wrong?
我会说,无论您在索引 10 处找到什么,如错误消息所述。 'T' 出了什么问题。因为你从未在你的 DATE_FORMAT 中提到过一个,所以你有一个 space 而不是。
在这个问题之后,你会遇到这样的问题,即你的字符串除了偏移量之外还包含一个时区名称,而你的格式化程序没有被告知。
正如其他答案所说,这些问题可以通过依赖默认解析器来解决,因为它们理解这种格式。