我写入我的 mongoDB 数据库,例如开始日期,开始日期始终是一周中的星期一(我使用并且我在欧洲中部时区)。
"startDate" : ISODate("2014-12-28T23:00:00Z"),
"startDate" : ISODate("2015-03-29T22:00:00Z")
"startDate" : ISODate("2015-04-05T22:00:00Z"),
"startDate" : ISODate("2015-10-25T23:00:00Z")
我很困惑,因为有时日期格式是:
2014-12-28T23:00:00Z (sunday, 23h)
有时是:
2015-04-05T22:00:00Z (sunday, 22h)
在 Java 代码中,日期是星期一,00h -> 这没问题。 有谁知道这里发生了什么,为什么记录的时间不同以及如何防止这种情况发生?
最佳答案
夏令时
MongoDB 将日期存储在 UTC 中默认。
由于您处于中欧时区,这意味着存在一小时或两小时的差异,具体取决于日期是在 Daylight Saving Time (DST) 之内还是之外。时期。 2015 年夏令时从 3 月 29 日开始,到 10 月 25 日结束。因此,12 月 28 日有 1 小时的偏移,4 月 5 日有 2 小时的偏移。
如果您想避免这种情况,您应该在将本地日期时间值保存到 MongoDB 之前将其转换为 UTC 时间。或者,正如 Markus Mahlberg 指出的那样,在加载日期后转换为本地时间。
关于MongoDB 时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34085053/