MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment puis-je récupérer datetiime de mongodb? En comparant les données avec jDateChosser Java

Votre format, YYYY-mm-dd'T'HH:MM:ss'Z' n'est pas correcte. Discutons de tout ce qui ne va pas avec ce format.

  1. Vous avez utilisé Y au lieu de y : Le symbole Y est utilisé pour Week year tandis que y est utilisé pour Year . Vérifiez Difference between year-of- ère et semaine-année ? pour en savoir plus.
  2. Vous avez utilisé mm pour le mois : Le symbole correct pour le mois est M .
  3. Vous avez utilisé MM pour minutes : Le symbole correct pour la minute est m .
  4. Vous avez joint Z entre guillemets simples : Le symbole Z est utilisé pour Time zone alors que 'Z' n'est rien d'autre qu'un caractère littéral. Vous souhaitez probablement formater le décalage horaire de +00:00 comme Z et pour cela, vous devez en fait utiliser X .

Ainsi, le format correct est le suivant :

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

Une démo avec le format suggéré :

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

Sortie :

2021-01-14T08:13:01Z

Notez que l'API date-heure de java.util et leur API de formatage, SimpleDateFormat sont obsolètes et sujets aux erreurs. Il est recommandé de cesser complètement de les utiliser et de passer au API date-heure moderne .

Utilisez Date#toInstant pour convertir un java.util.Date objet (le type hérité) à java.time.Instant (type moderne). Instant représente un point instantané sur la chronologie et devrait être juste suffisant pour la plupart de vos opérations JSON. Le Instant#toString renvoie la chaîne date-heure avec décalage de fuseau horaire UTC conforme aux normes ISO-8601 .

Démo :

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

Sortie :

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