使用Spring Boot 1.5.4.RELEASE和Mongo驱动程序3.4.2.

我想在mongo DB中存储LocalDate,但我面临一个奇怪的问题:

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:

"起始日期":ISODate("2017-08-25T18:30:00.000Z"),

"结束日期":ISODate("2020-11-30T18:30:00.000Z")

此外,我注意到,根据印度时间,存储的时间也不正确.

为什么控制台上的日期正确,而MongoDB中的日期不正确,以及如何解决这个问题?

推荐答案

mongo java客户端的date object returns as实例

问题可能是,当您保存startDateendDate值时,其toString()方法可能会使用JVM的默认时区来更新该值.

doc here表示The official BSON specification refers to the BSON Date type as the UTC datetime.,这可能是LocalDateTime个属性在保存到数据库之前被转换为UTC时区的原因.

为了避免这种混淆,建议使用bson type timestamp来更新日期字段.

Mongodb相关问答推荐

如何使用MongoDB对子文档进行条件投影?

我无法将文档发送到我的MongoDB集合,因为它告诉我使文档无效

如何在MongoDB中对两个数组进行分组?

Mongo查找条件:不存在

如何从集合中移除所有匹配的数组项?

如何为具有相同名称的嵌套字段创建文本索引

创建索引需要很长时间

实现 twitter 和 facebook 之类的主题标签

MongoDB 更改流副本集限制

如何在 Mongo 聚合中合并文档中的数组字段

使用 MongoDb 处理迁移

获取收集字节使用情况统计信息的pymongo方法?

MongoDB展开多个数组

如何在mongoose中加入两个集合

MongoDb:如何将附加对象插入对象集合?

MongoDB Compass 过滤器(查询)

在MongoDB中查询一个半​​径内的位置

C# MongoDB 驱动程序 - 如何使用 UpdateDefinitionBuilder?

有人在 Google App Engine 上try 过 MongoDB 吗?

如何在第一个文档中恢复 MongoDB ChangeStream 而不仅仅是在我开始收听后更改