MongoDB java-driver插入日期

标签 mongodb date mongodb-java

我正在使用带有 java-driver 2.10.1 的 MongoDB 2.2

我从 java.util.Date 实例将日期字段插入到文档中。我的实例具有以下值:

2012 年 10 月 10 日星期三 00:00:00 CEST

但是一旦进入 mongo,我就有了这个值: ISODate("2012-10-09T22:00:00Z")

我的插入代码:

BasicDBObject doc =  new BasicDBObject("key", event.getKey())
                    .append("title", event.getTitle())
                    .append("description",  event.getDescription())
                    .append("date",  event.getDate());
db.getCollection("events").insert(doc);

您可以在此调试屏幕截图中查看从我的事件对象引用的日期实例: enter image description here

与时区有什么关系吗?还是驱动程序的错误?

最佳答案

MongoDB 中的日期始终存储为 UTC datetimes ,所以你看到的是正确的。

CEST 时区比 UTC (GMT) 早两个小时,因此您的时间正确 UTC 表示比您的 CEST 时间早两个小时,这正是您所看到的。

关于MongoDB java-driver插入日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14583306/

相关文章:

java - 并发 - 以线程安全的方式获取通过 Java 插入的对象的 MongoDB 生成 ID

不带replicaSet可选参数的MongoDB URL

javascript - mongodb 与 typescript `toArray` 方法不起作用

javascript - Javascript 中的异步 IO 和迭代变量

mongodb - 当副本集在本地 IP 地址上相互连接时,连接到远程 MongoDB 副本集

mysql - 如何格式化MySQL查询日期

date - 本地时间的 make-timestamp 宏的使用

c# - 在 .NET 中识别替代日期(在 PowerShell、C# 或 VB 中)

java - MongoDB 恢复旧查询或跳到文档

java - 如何获取 Restheart 系列的 Etag