【发布时间】:2018-02-04 03:27:22
【问题描述】:
使用 Spring boot 1.5.4.RELEASE 和 Mongo 驱动程序 3.4.2。
我想将LocalDate 存储在mongo DB 中,但我遇到了一个奇怪的问题。
LocalDate startDate = LocalDate.now();
LocalDate endDate = LocalDate.of(2020,12,01);
System.out.println("---- StartDate : ---"+startDate);
System.out.println("-----End Date : ----"+endDate);
repository.save(new Person("Mehraj","Malik", startDate, endDate));
控制台输出:
----开始日期:---2017-08-26
-----结束日期:----2020-12-01
但在 MongoDb 中,它存储的日期不正确。
以下是来自 MongoDb 的 json:
"startDate" : ISODate("2017-08-25T18:30:00.000Z"),
"endDate" :ISODate("2020-11-30T18:30:00.000Z")
另外,我注意到根据印度时间存储的时间也不正确。
有人可以在这里帮助我吗?为什么日期在控制台上是正确的,但在 MongoDB 中却不正确,以及如何解决这个问题。
【问题讨论】:
-
MongoDB存储UTC日期时间,LocalDate不包含时区
-
Mongo Java 客户端可以随意代表您的日期对象。如果你想存储字符串,那就这样做吧
-
LocalDate 忽略时间字段。它们是未定义的。如果时间很重要,请使用 LocalDate.atStartOfDay 并将日期时间存储在 mongodb
-
@Jerry06 ISO 和 UTC 一样吗? '因为根据发布的 json 它在 ISO 中显示?
-
iso 是时间格式,utc 是时区('no timezone' timezone)
标签: java mongodb spring-boot java-8 spring-data-mongodb