MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как мога да извлека datetiime от mongodb? Чрез сравняване на данните с jDateChosser Java

Вашият формат, YYYY-mm-dd'T'HH:MM:ss'Z' не е правилно. Нека обсъдим всичко, което не е наред с този формат.

  1. Използвали сте Y вместо y : Символът Y се използва за Week year докато y се използва за Year . Проверете Разлика между година на- ера и базирана на седмица година? за да научите повече за него.
  2. Използвали сте mm за месец: Правилният символ за месеца е M .
  3. Използвали сте MM за минути: Правилният символ за минутата е m .
  4. Приложили сте Z в единични кавички: Символът Z се използва за Time zone докато 'Z' не е нищо друго освен буквален знак. Вероятно искате да форматирате отместването на часовата зона на +00:00 като Z и за това всъщност трябва да използвате X .

И така, правилният формат е както следва:

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

Демо с предложения формат:

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

Изход:

2021-01-14T08:13:01Z

Имайте предвид, че API за дата-час на java.util и техния API за форматиране, SimpleDateFormat са остарели и податливи на грешки. Препоръчително е да спрете да ги използвате напълно и да преминете към модерен API за дата-час .

Използвайте Date#toInstant за конвертиране на java.util.Date обект (наследеният тип) към java.time.Instant (модерен тип). Instant представлява моментна точка от времевата линия и трябва да е достатъчна за повечето от вашите JSON операции. Instant#toString връща низа за дата-час с отместване на часовата зона UTC, което е съвместимо с стандартите ISO-8601 .

Демо:

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

Изход:

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. .get() изисква функции за обратно извикване, но има [недефиниран обект]

  2. Неправилен брой от заявка за агрегиране

  3. mongod и mongo командите не работят на Windows 10

  4. Как да конвертирате милисекунди в дата в агрегирането на mongodb?

  5. C# MongoDB драйвер:Не може да се намери начин за изпълнение на сложна заявка за филтър AnyIn в MongoDB