sql >> Base de Datos >  >> NoSQL >> MongoDB

Analizar la cadena de fecha ISO8601 hasta la fecha con la zona horaria UTC

Si está utilizando Java 7 o anterior, puede consultar esta publicación.

Si está utilizando Java 8, podría hacer:

    DateTimeFormatter timeFormatter = DateTimeFormatter.ISO_DATE_TIME;
    TemporalAccessor accessor = timeFormatter.parse("2015-10-27T16:22:27.605-07:00");

    Date date = Date.from(Instant.from(accessor));
    System.out.println(date);

Actualizar

Como señaló @BasilBourque en el comentario, TemporalAccessor es una interfaz de nivel de marco de Java, y no es recomendable usarla en el código de la aplicación y es recomendable usar clases concretas en lugar de las interfaces.

Esta interfaz es una interfaz de nivel de marco que no debe usarse ampliamente en el código de la aplicación. En su lugar, las aplicaciones deberían crear y pasar instancias de tipos concretos, como LocalDate. Hay muchas razones para esto, parte de las cuales es que las implementaciones de esta interfaz pueden estar en sistemas de calendario que no sean ISO. Ver ChronoLocalDate para una discusión más completa de los problemas.

Hay algunas clases concretas disponibles para usar, como LocalDate, LocalDateTime, OffsetDateTime, ZonedDateTime, etc.

DateTimeFormatter timeFormatter = DateTimeFormatter.ISO_DATE_TIME;

OffsetDateTime offsetDateTime = OffsetDateTime.parse("2015-10-27T16:22:27.605-07:00", timeFormatter);

Date date = Date.from(Instant.from(offsetDateTime));
System.out.println(date);