我得到的日期时间值为:1963-03-24T00:00:00.000+01:00
我正在使用Java 8解析日期时间,如下所示:
public static final DateTimeFormatter ISO_OFFSET_DATE_TIME = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX ZD");
public static ZonedDateTime parseDateTime(String date) {
return parseDateTime(date, ISO_OFFSET_DATE_TIME);
}
public static ZonedDateTime parseDateTime(String date, DateTimeFormatter format) {
if (date == null) {
return null;
}
return ZonedDateTime.parse(date, format);
}
运行此命令时,出现此错误:
Caused by: java.time.format.DateTimeParseException: Text '1963-03-24T00:00:00.000+01:00' could not be parsed at index 19
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949) ~[?:1.8.0_112]
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851) ~[?:1.8.0_112]
at java.time.ZonedDateTime.parse(ZonedDateTime.java:597) ~[?:1.8.0_112]
我的图案怎么了?
答案 0 :(得分:1)
使用以下日期格式器:
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
代替:
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX ZD");
您输入的时间的最后一部分是.000+0100
,由点,毫秒和时区组成。
点可以表示为.
可以用.000
解析毫秒.SSS
,可以用+01:00
解析时区XXX
。