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