Aquí está mi código java8 para esta cadena de fecha "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);

Usar LocalDate con una cadena de fecha truncada resolverá este problema, pero no puedo simplemente eliminar Time y usar LocalDate en lugar de LocalDateTime

Por favor sugiera lo que está pasando mal aquí. También necesito saber por qué su respuesta funcionará.

0
veer7 22 mar. 2017 a las 22:58

2 respuestas

La mejor respuesta

Si cambia su patrón a yyyy-MM-dd'T'HH:mm:ss.SSSZ, imprimirá 2016-08-30T06:18:17.123.

Pero en su código, la fecha está con : en milisegundos cuando la correcta es ..

Código completo:

        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);

Salida:

####attask date: 2016-08-30T06:18:17.123-0600
2016-08-30T06:18:17.123
2
MarcosCordeiro 22 mar. 2017 a las 20:32

El signo menos en el desplazamiento de zona es parte de la expresión de desplazamiento de zona, no debe escapar como un literal.

4
Affe 22 mar. 2017 a las 20:04