java.time.format.DateTimeParseException:Text' 2016-08-30T06:18:17:698-0600'无法在索引24处解析

时间:2017-03-22 19:58:33

标签: java datetime java-8 jodatime

以下是此日期字符串java8

"2016-08-30T06:18:17:698-0600"代码
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("YYYY-MM-DD'T'HH:mm:ss:SSS'-'XXX");
    String attDate = "2016-08-30T06:18:17:698-0600";
    //attDate = attDate.substring(0, 19);
    System.out.println("####attask date: "+attDate);
    LocalDateTime dt = LocalDateTime.parse(attDate, formatter);
    System.out.println(dt);

LocalDate与截断日期字符串一起使用可解决此问题,但我无法删除Time并使用LocalDate代替LocalDateTime

请说明这里出了什么问题。我还需要为什么你的答案会奏效。

2 个答案:

答案 0 :(得分:4)

区域偏移中的减号是区域偏移表达式的一部分,您不应该将其作为文字转义。

答案 1 :(得分:2)

如果您将模式更改为yyyy-MM-dd'T'HH:mm:ss.SSSZ,则会打印2016-08-30T06:18:17.123

但在您的代码中,当正确为:时,日期为.,以毫秒为单位。

完整代码:

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
        String attDate = "2016-08-30T06:18:17.123-0600";
        //attDate = attDate.substring(0, 19);
        System.out.println("####attask date: "+attDate);
        LocalDateTime dt = LocalDateTime.parse(attDate, formatter);
        System.out.println(dt);

<强>输出:

####attask date: 2016-08-30T06:18:17.123-0600
2016-08-30T06:18:17.123