Skip to main content
 首页 » 编程设计

date中java.time.format.DateTimeParseException : Text '1963-03-24T00:00:00.000+01:00' could not be parsed at index 19 1000

2025年05月04日175qlqwjy

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

我的模式有什么问题吗?

请您参考如下方法:

使用以下日期格式化程序:

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解析.