【问题标题】:java 9999-12-31 iso date inserted in mongo results as a non iso date insertedjava 9999-12-31 iso 日期插入 mongo 结果作为非 iso 日期插入
【发布时间】:2020-03-12 21:23:30
【问题描述】:

我想在 mongodb 中插入以下文档:

 Query query = new Query();
 query.addCriteria(Criteria.where("client").is(client));
 Update update = new Update();
 update.set("dateTime", new DateTime());
 update.set("maxDate", new DateTime("9999-12-31T00:00:00.000+01:00"));
 mongoTemplate.upsert(query, update, MyClass.class);

插入的对象是

{
    "client" : "client",
    "dateTime" : ISODate("2020-03-12T10:11:35.077Z"),
    "maxDate" : Date(253402210800000)
}

我希望 maxDate 采用 ISODate 格式。可能吗 ? 9999-12-31T00:00:00.000+01:00 对 mongodb 来说太远了吗? 这么大的价值有什么问题吗?

我在这里读到 https://docs.mongodb.com/manual/core/shell-types/ mongoDB 可以支持 9999 年

使用 datagrip 而不是使用 robomongo 进行编辑 如果我使用 datagrip 而不是 robomongo 来读取文档,则格式是正确的。问题可能来自 robomongo 显示器吗?

【问题讨论】:

  • MongoDB 应该可以工作,即ISODate("9999-12-31T00:00:00") 工作正常。也许java不支持,但是我对java不熟悉。
  • 如果我使用datagrip而不是robomongo来读取文档,格式是正确的。问题可能来自 robomongo 显示器吗?

标签: java mongodb datetime robo3t isodate


【解决方案1】:

我没有尝试或运行过这个。但我相信为 DateTime 使用不同的构造函数应该可以解决这个问题。请尝试下面的 maxDate 字段构造函数。

公共日期时间(int 年, int monthOfYear, 诠释 dayOfMonth, int hourOfDay, int minOfHour, int secondOfMinute, int millisOfSecond, DateTimeZone 区域)

【讨论】:

  • 感谢您的建议,但无济于事。在调试模式java端,我可以看到两个日期的格式相同
  • 我正在查看您从集合中检索到的长日期,它是日期的最小长值。不只是格式,值是错误的。你试过传统的 Date() 和 SimpleDateFormat() 组合吗?
猜你喜欢
  • 2017-11-13
  • 1970-01-01
  • 2020-05-13
  • 2014-01-28
  • 1970-01-01
  • 2018-08-07
  • 1970-01-01
  • 1970-01-01
  • 2016-04-03
相关资源
最近更新 更多