java.time.format.DateTimeParseException:无法在索引19 1000处解析文本'1963-03-24T00:00:00.000 + 01:00'

时间:2018-07-20 12:33:26

标签: date java-8

我得到的日期时间值为: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]

我的图案怎么了?

1 个答案:

答案 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