将字符串日期(mm/dd/yyyy)转换为ISO格式,用于MongoDB查询,Java [已关闭]

tsm1rwdh  于 2022-12-03  发布在  Go
关注(0)|答案(1)|浏览(139)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
昨天关门了。
Improve this question
我们如何将格式为mm/dd/yyyy的字符串转换为Date ISO格式,该格式可以作为输入传递给使用java的mongo db Query?
例如:字符串的输入格式为11/30/2022,需要转换为ISODate(“2022-11- 30 T00:00:00.000+0000”)

更新日期:

添加了下面的代码片段,它生成了日期并传递给查询,如下图所示,我使用mongoTemplate来执行查询。
mongoTemplate.find(query, Packet.class);

当执行代码时,即使给定的输入有记录,它也返回空。
直接在mongodb客户端中运行此程序,它不会返回任何内容。

但是当我在mongodb客户端将查询更新为时,通过添加ISODate(),它返回了正确的响应。

所以想知道我在哪里犯了一个错误!

yeotifhr

yeotifhr1#

将给定的日期字符串解析为LocalDate,然后使用LocalDate#atStartOfDay(ZoneId zone)ZoneOffset.UTC将其转换为OffsetDateTime。随后,将获得的OffsetDateTime化为所需的字符串。

演示

import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        DateTimeFormatter parser = DateTimeFormatter.ofPattern("MM/dd/uuuu");
        OffsetDateTime odt = LocalDate.parse("11/30/2022", parser).atStartOfDay(ZoneOffset.UTC).toOffsetDateTime();
        System.out.println(odt);

        // Custom format
        String formatted = odt.format( DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSSxx"));
        System.out.println(formatted);
    }
}

输出

2022-11-30T00:00Z
2022-11-30T00:00:00.000+0000

从**Trail: Date Time**了解有关现代日期-时间API的更多信息。

相关问题