MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como posso recuperar datetiime do mongodb? Ao comparar os dados com jDateChosser Java


Seu formato, YYYY-mm-dd'T'HH:MM:ss'Z' não está correto. Vamos discutir tudo o que está errado com este formato.
  1. Você usou Y em vez de y : O símbolo Y é usado para Week year enquanto y é usado para Year . Verifique Diferença entre ano-de- era e ano com base na semana? para saber mais sobre isso.
  2. Você usou mm por mês: O símbolo correto para o mês é M .
  3. Você usou MM por minutos: O símbolo correto para o minuto é m .
  4. Você incluiu Z entre aspas simples: O símbolo, Z é usado para Time zone enquanto 'Z' nada mais é do que um caractere literal. Provavelmente você deseja formatar o deslocamento do fuso horário de +00:00 como Z e para isso, você deve de fato usar X .

Assim, o formato correto é o seguinte:
yyyy-MM-dd'T'HH:mm:ssX

Uma demonstração com o 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));
    }
}

Saída:
2021-01-14T08:13:01Z

Observe que a API de data e hora de java.util e sua API de formatação, SimpleDateFormat estão desatualizados e sujeitos a erros. Recomenda-se parar de usá-los completamente e mudar para o API moderna de data e hora .

Use Date#toInstant para converter um java.util.Date objeto (o tipo legado) para java.time.Instant (o tipo moderno). Instant representa um ponto instantâneo na linha do tempo e deve ser suficiente para a maioria de suas operações JSON. O Instant#toString retorna a string de data e hora com deslocamento de fuso horário UTC que é compatível com os padrões ISO-8601 .

Demonstração:
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));
    }
}

Saída:
2021-01-14T08:28:35.659Z
2021-01-14T08:28:35.659Z
2021-01-14T08:28:35Z