这是我用于此日期字符串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

请在这里提出问题。我还需要说明为什么您的答案会起作用。

最佳答案

如果将图案更改为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

关于java - java.time.format.DateTimeParseException:无法在索引24处解析文本'2016-08-30T06:18:17:698-0600',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42961507/

10-10 14:10