sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan kan jeg hente datetiime fra mongodb? Ved at sammenligne dataene med jDateChosser Java

Dit format, YYYY-mm-dd'T'HH:MM:ss'Z' er ikke korrekt. Lad os diskutere alt, hvad der er galt med dette format.

  1. Du har brugt Y i stedet for y : Symbolet Y bruges til Week year mens y bruges i Year . Tjek Forskel mellem year-of- æra og ugebaseret år? for at lære mere om det.
  2. Du har brugt mm for måned: Det korrekte symbol for måneden er M .
  3. Du har brugt MM i minutter: Det korrekte symbol for minuttet er m .
  4. Du har vedlagt Z inden for enkelte anførselstegn: Symbolet, Z bruges til Time zone hvorimod 'Z' er intet andet end en bogstavelig karakter. Du vil sandsynligvis formatere tidszoneforskydningen af ​​+00:00 som Z og til dette skal du faktisk bruge X .

Så det korrekte format er som følger:

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

En demo med det foreslåede format:

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

Output:

2021-01-14T08:13:01Z

Bemærk, at dato-tids-API'en for java.util og deres formaterings-API, SimpleDateFormat er forældede og fejltilbøjelige. Det anbefales at stoppe helt med at bruge dem og skifte til moderne date-time API .

Brug Date#toInstant at konvertere en java.util.Date objekt (den ældre type) til java.time.Instant (den moderne type). Instant repræsenterer et øjeblikkeligt punkt på tidslinjen og burde være lige nok til de fleste af dine JSON-operationer. Instant#toString returnerer dato-tidsstrengen med UTC tidszone offset, som er kompatibel med ISO-8601 standarder .

Demo:

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

Output:

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



  1. Indsæt stor plade i mongodb ved hjælp af mongo-skal

  2. Hvordan fjerner man _id i MongoDB og erstatter med et andet felt som en primær nøgle?

  3. Godkendelse mislykkedes ved brug af flask_pymongo

  4. MongoDB samler pipelines med linket objekt