【发布时间】:2016-02-14 06:00:44
【问题描述】:
如何使用 Spring Data MongoDB 插入新日期?
我目前正在诉诸
User = new User();
user.setCreationDate(new Date());
mongoOperation.save(user);
解决问题,但最终结果是用户保存的是运行代码的服务器的当前时间,而不是运行数据库的服务器的当前时间。
由于此代码将在多台服务器上的多个实例中并行运行,并且服务器的时间可能略有不同,因此我想复制与执行 a 时完全相同的行为
db.users.insert({'creationDate': new ISODate()})
直接在 mongo shell 中。
如何使用 Sprint-Data-MongoDB 实现这一点?
【问题讨论】:
-
为什么你们的日期不同?我的意思是你肯定需要在你的服务器上设置正确的时区和语言环境......但即使那样,日期 value 应该是相同的,它只会根据 UI 在 UI 中以不同的方式显示格式化时选择的语言环境
-
嘿@Zilvinas,感谢您的加入。日期可能不同,因为它们是完全不同的日期计算...一个由 mongoDb 引擎提供,另一个是由java提供。我确信服务器配置得尽可能好(除了部署管道,我无法访问它们,它们仅由 infra/dev-ops 处理),但由于我以 ms 精度存储,因此可以存在差异...不过,即使 java 的 new Date() 足够好,我仍然想知道该怎么做 :)
-
如果您的服务器开始时设置了区域设置和服务器时间,则考虑到时区信息,不同服务器上的原子日期和时间应该相同。如果位于 GMT+2:00 的服务器 1 显示时间 2 PM,则位于 GMT-3:00 的服务器 2 应显示 9 AM,但原子时间值应相同。这意味着您在向用户打印日期/时间时使用 locale 值,因此如果您在输出时间时在两台服务器上使用相同的语言环境,它应该显示完全相同的值。
标签: java spring mongodb spring-data spring-data-mongodb