gpt4 book ai didi

java - Spring Data MongoDB - 保存 LocalDate/LocalDateTime 时,值被设置为昨天

转载 作者:可可西里 更新时间:2023-11-01 10:16:07 28 4
gpt4 key购买 nike

我在将 Java8 日期 API 值保存到 MongoDB 数据库时遇到了问题。每当保存新的 LocalDate 实例 (LocalDate.now()) 时,结果我们将获得昨天日期的值,时间设置为下午 23:00。示例:

dt.getDate().toString() 

给我“2017-03-17”

但是当我查看数据库时,我得到这样的值:

"dt" : ISODate("2017-03-16T23:00:00.000Z")

我的时区是 UTC+01:00

最佳答案

MongoDB 以 UTC 时间保存日期。

LocalTime 是您的挂钟时间。

当您将它传递给 MongoDb 时,spring 将使用您的系统区将 LocalTime 转换为 Instant(UTC 时间)。

考虑

LocalDateTime localDateTime = LocalDateTime.parse("2017-03-17T00:00:00")

发生了这样的事情

Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();

这是通过从您的本地时间应用偏移量 (+01:00) 将您的本地时间更改为 UTC 即时时间。

Output(in UTC) : 2017-03-16T23:00:00.000Z 

关于java - Spring Data MongoDB - 保存 LocalDate/LocalDateTime 时,值被设置为昨天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42857763/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com