MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Analyser la chaîne de date ISO8601 à ce jour avec le fuseau horaire UTC

Si vous utilisez Java 7 ou une version antérieure, vous pouvez vous référer à cet article.

Si vous utilisez Java 8, vous pouvez :

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

Mettre à jour

Comme l'a souligné @BasilBourque dans le commentaire, TemporalAccessor est une interface au niveau du framework Java, et il n'est pas conseillé de l'utiliser dans le code de l'application et il est conseillé d'utiliser des classes concrètes plutôt que les interfaces.

Cette interface est une interface au niveau du framework qui ne devrait pas être largement utilisée dans le code d'application. Au lieu de cela, les applications doivent créer et transmettre des instances de types concrets, tels que LocalDate. Il y a plusieurs raisons à cela, dont une partie est que les implémentations de cette interface peuvent être dans des systèmes de calendrier autres que ISO. Voir ChronoLocalDate pour une discussion plus complète des problèmes.

Il y a quelques classes concrètes disponibles à utiliser, comme LocalDate, LocalDateTime, OffsetDateTime, ZonedDateTime et 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);