如何从 mongodb 中检索 datetiime?通过将数据与 jDateChosser Java 进行比较

问题描述

'1337.docx'

解决方法

您的格式 YYYY-mm-dd'T'HH:MM:ss'Z' 不正确。让我们讨论一下这种格式的所有错误。

  1. 您使用了 Y 而不是 y 符号 Y 用于 Week yeary 用于Year。查看 Difference between year-of-era and week-based-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

请注意,java.util 的日期时间 API 及其格式 API SimpleDateFormat 已过时且容易出错。建议完全停止使用它们并切换到 modern date-time API

使用 Date#toInstantjava.util.Date 对象(遗留类型)转换为 java.time.Instant(现代类型)。 Instant 代表时间线上的一个瞬时点,应该足以满足您的大多数 JSON 操作。 Instant#toString 返回具有符合 ISO-8601 standards 的 UTC 时区偏移量的日期时间字符串。

演示:

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