使用Spring Boot 1.5.4.RELEASE和Mongo驱动程序3.4.2。
1.5.4.RELEASE
3.4.2
我想存储LocalDate的mongo DB,但我现在面临一个奇怪的问题。
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
在控制台上输出:
-—开始日期:— 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”)
“ startDate”:ISODate(“ 2017-08-25T18:30:00.000Z”),
“ endDate”:ISODate(“ 2020-11-30T18:30:00.000Z”)
另外,我注意到根据印度时间,存储时间也不正确。
有人可以在这里帮助我。.为什么日期在控制台上正确但在MongoDB中不正确,以及如何解决此问题。
date对象的mongo- java客户端返回作为的实例 java.util.Date。
java.util.Date
问题可能是,当您保存startDate和endDate值时,其toString()方法可能会使用JVM的默认时区来更新值。
startDate
endDate
toString()
此处的文档指出, 官方BSON规范将BSON日期类型称为UTC日期时间。 这可能是您的LocalDateTime属性在保存到数据库之前已转换为UTC时区的原因。
LocalDateTime
为了避免这种混淆,建议使用bson类型timestamp来更新日期字段。
timestamp