sql >> Database >  >> NoSQL >> MongoDB

Hoe kan ik datetiime van mongodb ophalen? Door de gegevens te vergelijken met jDateChosser Java

Uw formaat, YYYY-mm-dd'T'HH:MM:ss'Z' Is niet correct. Laten we alles bespreken wat er mis is met dit formaat.

  1. Je hebt Y . gebruikt in plaats van y : Het symbool Y wordt gebruikt voor Week year terwijl y wordt gebruikt voor Year . Controleer Verschil tussen jaar-van- tijdperk en weekgebaseerd jaar? om er meer over te leren.
  2. U heeft mm . gebruikt voor maand: Het juiste symbool voor de maand is M .
  3. Je hebt MM . gebruikt minutenlang: Het juiste symbool voor de minuut is m .
  4. U heeft Z . bijgevoegd tussen enkele aanhalingstekens: Het symbool, Z wordt gebruikt voor Time zone terwijl 'Z' is niets anders dan een letterlijk karakter. Waarschijnlijk wilt u de tijdzone-offset van +00:00 . opmaken als Z en hiervoor zou je in feite X . moeten gebruiken .

Het juiste formaat is dus als volgt:

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

Een demo met het voorgestelde formaat:

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

Uitvoer:

2021-01-14T08:13:01Z

Merk op dat de date-time API van java.util en hun opmaak-API, SimpleDateFormat zijn verouderd en foutgevoelig. Het wordt aanbevolen om ze helemaal niet meer te gebruiken en over te schakelen naar de moderne datum-tijd-API .

Gebruik Date#toInstant om een ​​java.util.Date . te converteren object (het oude type) naar java.time.Instant (het moderne type). Instant vertegenwoordigt een onmiddellijk punt op de tijdlijn en zou net genoeg moeten zijn voor de meeste van uw JSON-bewerkingen. De Instant#toString retourneert de datum-tijd-tekenreeks met UTC-tijdzone-offset die voldoet aan de ISO-8601-normen .

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

Uitvoer:

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



  1. hoe schakel ik mongodb cli pretty print in? - db.col.find().pretty() werkt niet

  2. Een diep record bijwerken in MongoDb

  3. ng-if vaker gebeld worden dan zou moeten

  4. transactie met meerdere documenten werkt niet in c# met behulp van mongodb 4.08 community-server