sql >> Databáze >  >> NoSQL >> MongoDB

Analyzujte řetězec data ISO8601 k datu s časovým pásmem UTC

Pokud používáte Javu 7 nebo starší, můžete se podívat na tento příspěvek.

Pokud používáte Java 8, můžete udělat:

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

Aktualizovat

Jak zdůraznil @BasilBourque v komentáři, TemporalAccessor je rozhraní na úrovni rámce Java a není vhodné jej používat v kódu aplikace a je vhodné používat spíše konkrétní třídy než rozhraní.

Toto rozhraní je rozhraní na úrovni rámce, které by nemělo být široce používáno v kódu aplikace. Místo toho by aplikace měly vytvářet a předávat instance konkrétních typů, jako je LocalDate. Existuje pro to mnoho důvodů, část z nich spočívá v tom, že implementace tohoto rozhraní mohou být v jiných kalendářových systémech než ISO. Podrobnější diskusi o problémech naleznete v ChronoLocalDate.

Existuje několik konkrétních tříd, které lze použít, jako LocalDate, LocalDateTime, OffsetDateTime, ZonedDateTime atd.

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


  1. mapa MongoDB()

  2. Mongoose Unique index nefunguje!

  3. Dotazování mongodb z golang pomocí _id uloženého v poli

  4. Skupinové počítání s MongoDB pomocí agregačního rámce