Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mongo DB中存储java 8 LocalDate_Java_Mongodb_Spring Boot_Java 8_Spring Data Mongodb - Fatal编程技术网

在mongo DB中存储java 8 LocalDate

在mongo DB中存储java 8 LocalDate,java,mongodb,spring-boot,java-8,spring-data-mongodb,Java,Mongodb,Spring Boot,Java 8,Spring Data Mongodb,使用弹簧靴1.5.4.释放和Mongo驱动程序3.4.2 我想在mongodb中存储LocalDate,但我面临一个奇怪的问题 LocalDate startDate = LocalDate.now(); LocalDate endDate = LocalDate.of(2020,12,01); System.out.println("---- StartDate : ---"+startDate); System.out.pri

使用弹簧靴
1.5.4.释放
和Mongo驱动程序
3.4.2

我想在
mongodb
中存储
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中的日期不正确,以及如何解决此问题

的as实例的mongo java客户端
        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));
java.util.Date

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

官方BSON规范将BSON日期类型称为UTC日期时间。这可能是您的
LocalDateTime
属性在保存到DB之前转换为UTC时区的原因


为了避免这种混淆,建议使用bson类型来更新日期字段。

在MongoDB Java驱动程序3.7版本中:我们可以看到驱动程序现在支持LocalDate:

JSR-310即时、LocalDate和LocalDateTime支持 驱动程序中添加了对Instant、LocalDate和LocalDateTime的支持


MongoDB存储UTC日期时间,LocalDate不包含timezoneMongo Java客户端可以随意表示日期对象。如果要存储字符串,请使用insteadLocalDate忽略时间字段。它们是未定义的。如果时间很重要,请使用LocalDate.atStartOfDay并在中存储日期时间mongodb@Jerry06ISO和UTC是否相同?”因为根据发布的json,它在ISO中显示?ISO是一种时间格式,utc是一个时区(一个“无时区”时区)。我梦想有一天,规范不会基于假设破坏数据,而只是这样存储数据。就像Java8使用新的日期格式一样。