MongoDB 时区

标签 mongodb datetime

我写入我的 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/

相关文章:

java - 日期操作和 SQL 日期时间 WHERE 查询

python - 将诸如 "6:02PM"之类的仅限时间的字符串转换为日期时间对象?

python - Datetime 的 strftime 格式不正确

.net - .NET 中的格式化日期函数

python - 如何将以 24 作为小时值的日期/时间字符串转换为 Pandas 中的日期时间?

mongodb - 使用游标作为查询的迭代器

node.js - 无法通过Docker-compose连接到MongoDB

java - 如何在 Spring Boot 中使用查询 DSL 和 MongoDB

java - 如何将没有时区计算的原始日期/时间存储到 MongoDb

javascript - meteor 集合不更新客户端上的订阅