MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Analisar a string de data ISO8601 até o momento com o fuso horário UTC


Se você estiver usando o Java 7 ou anterior, consulte este post.

Se você estiver usando o Java 8, você pode fazer:
    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);

Atualizar


Conforme apontado por @BasilBourque no comentário, TemporalAccessor é uma interface de nível de framework java, e não é aconselhável usar no código da aplicação e é aconselhável usar classes concretas em vez das interfaces.

Essa interface é uma interface de nível de estrutura que não deve ser amplamente usada no código do aplicativo. Em vez disso, os aplicativos devem criar e transmitir instâncias de tipos concretos, como LocalDate. Há muitas razões para isso, parte das quais é que as implementações dessa interface podem ser em sistemas de calendário diferentes do ISO. Consulte ChronoLocalDate para uma discussão mais completa dos problemas.

Existem algumas classes concretas disponíveis para uso, como LocalDate, LocalDateTime, OffsetDateTime, ZonedDateTime e 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);