sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo puedo recuperar datetiime de mongodb? Al comparar los datos con jDateChosser Java

Tu formato, YYYY-mm-dd'T'HH:MM:ss'Z' no es correcto. Discutamos todo lo que está mal con este formato.

  1. Has usado Y en lugar de y : El símbolo Y se usa para Week year mientras y se utiliza para Year . Compruebe Diferencia entre el año de ¿Era y semana basada en el año? para obtener más información al respecto.
  2. Has usado mm por mes: El símbolo correcto para el mes es M .
  3. Has usado MM por minutos: El símbolo correcto para el minuto es m .
  4. Has incluido Z entre comillas simples: El símbolo, Z se utiliza para Time zone mientras que 'Z' no es más que un carácter literal. Probablemente desee formatear el desplazamiento de la zona horaria de +00:00 como Z y para esto, de hecho deberías usar X .

Entonces, el formato correcto es el siguiente:

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

Una demostración con el formato sugerido:

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

Salida:

2021-01-14T08:13:01Z

Tenga en cuenta que la API de fecha y hora de java.util y su API de formato, SimpleDateFormat están desactualizados y son propensos a errores. Se recomienda dejar de usarlos por completo y cambiar a API moderna de fecha y hora .

Use Date#toInstant para convertir un java.util.Date objeto (el tipo heredado) a java.time.Instant (el tipo moderno). Instant representa un punto instantáneo en la línea de tiempo y debería ser suficiente para la mayoría de sus operaciones JSON. El Instant#toString devuelve la cadena de fecha y hora con el desplazamiento de zona horaria UTC que cumple con los estándares ISO-8601 .

Demostración:

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

Salida:

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