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

Jak mohu načíst datetiime z mongodb? Porovnáním dat s jDateChosser Java

Váš formát, YYYY-mm-dd'T'HH:MM:ss'Z' není správné. Pojďme diskutovat o všem, co je na tomto formátu špatné.

  1. Použili jste Y místo y : Symbol Y se používá pro Week year zatímco y se používá pro Year . Zkontrolujte Rozdíl mezi rokem- období a týdenní rok? se o tom dozvíte více.
  2. Použili jste mm za měsíc: Správný symbol měsíce je M .
  3. Použili jste MM na minuty: Správný symbol pro minutu je m .
  4. Připojili jste Z v jednoduchých uvozovkách: Symbol Z se používá pro Time zone zatímco 'Z' není nic jiného než doslovný charakter. Pravděpodobně budete chtít naformátovat posun časového pásma +00:00 jako Z a za tímto účelem byste měli ve skutečnosti použít X .

Správný formát je tedy následující:

yyyy-MM-dd'T'HH:mm:ssX

Ukázka s navrhovaným formátem:

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX", Locale.ENGLISH);
        Calendar calendar = Calendar.getInstance();
        Date date = calendar.getTime();
        System.out.println(sdf.format(date));
    }
}

Výstup:

2021-01-14T08:13:01Z

Všimněte si, že datum-čas API java.util a jejich formátovací rozhraní API, SimpleDateFormat jsou zastaralé a náchylné k chybám. Doporučuje se úplně je přestat používat a přejít na moderní rozhraní API pro datum a čas .

Použijte Date#toInstant pro převod java.util.Date objekt (starší typ) na java.time.Instant (moderní typ). Instant představuje okamžitý bod na časové ose a měl by stačit pro většinu vašich operací JSON. Instant#toString vrátí řetězec data a času s posunem časového pásma UTC, který je v souladu s normy ISO-8601 .

Ukázka:

import java.time.Instant;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        Date date = calendar.getTime();
        Instant instant = date.toInstant();
        // Print the value of instant#toString
        System.out.println(instant);

        OffsetDateTime odt = instant.atOffset(ZoneOffset.UTC);
        System.out.println(odt);
        // Custom format
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ssX", Locale.ENGLISH);
        System.out.println(dtf.format(odt));
    }
}

Výstup:

2021-01-14T08:28:35.659Z
2021-01-14T08:28:35.659Z
2021-01-14T08:28:35Z



  1. MongoDB Norm dotazuje vnořené objekty

  2. MongoDB Zobrazit položky dětí ve vztahu One to Many

  3. MongoDB $dateFromString

  4. Jak jsou data v databázi MongoDB uložena na disku?