sql >> Databasteknik >  >> NoSQL >> MongoDB

Analysera ISO8601-datumsträngen till datum med UTC-tidszon

Om du använder Java 7 eller tidigare kan du hänvisa till det här inlägget.

Om du använder Java 8 kan du göra:

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

Uppdatera

Som påpekats av @BasilBourque i kommentaren är TemporalAccessor ett gränssnitt på java-ramverksnivå och är inte tillrådligt att använda i applikationskoden och det är tillrådligt att använda konkreta klasser snarare än gränssnitten.

Detta gränssnitt är ett gränssnitt på ramnivå som inte bör användas i stor utsträckning i applikationskod. Istället bör applikationer skapa och skicka runt instanser av konkreta typer, till exempel LocalDate. Det finns många anledningar till detta, varav en del är att implementeringar av detta gränssnitt kan vara i andra kalendersystem än ISO. Se ChronoLocalDate för en mer utförlig diskussion om problemen.

Det finns några konkreta klasser tillgängliga att använda, som LocalDate, LocalDateTime, OffsetDateTime, ZonedDateTime och 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);


  1. Kunde inte ansluta till Redis vid 10.XX.XX.28:6379:Okänt fel - vid åtkomst från Spring Batch eller Windows-maskin

  2. MongoDB-prestanda - att ha flera databaser

  3. MongoDB - objekt? Varför behöver jag _id sammanlagt

  4. Ställ in standarddatum när du infogar dokument med fältet tid. Tid