【问题标题】:How to insert date in mongo DB without timezone如何在没有时区的 mongo DB 中插入日期
【发布时间】:2018-03-22 17:12:48
【问题描述】:

我正在使用以下 date 方法在 mongo DB 中插入日期:

BasicDBObject Created_Date = new BasicDBObject("date", now);
record.put("Created_Date", now);

它以以下格式返回结果:

 "Created_Date" : ISODate("2017-10-11T06:16:10.536Z")

是否可以插入没有时区的日期,即

"Created_Date" :"2017-10-11"

感谢您的帮助。

【问题讨论】:

  • @glitch "MongoDB 将无法判断 2017-10-11 是否大于 2017-10-10。" - 为什么不?日期顺序对应字符串顺序。
  • 为什么不在保存之前将日期转换为字符串?
  • @glitch:谢谢,但我想插入当前日期,而不是使用(“Created_Date”,现在)插入“2017-10-11”之类的特定日期。

标签: java mongodb rest


【解决方案1】:

您的问题与您的示例不一致。您的示例显示了在没有日期的 time 部分的情况下存储日期,但您的问题是关于在没有 timezone 的情况下存储日期。

MongoDB 不会将时区存储为日期的一部分,所有日期都以 UTC 格式存储。详情请见Model Time Data

如果您想存储没有时间的日期(如您在示例中所示),则“截断”日期。您仍将拥有一个完整的 Date 对象,时间显示为 UTC 午夜,但正如您所描述的,这是处理日期的一种相当典型的方式。

由于您使用的是 Java,这里有一些截断日期的方法:Java Date cut off time information

【讨论】:

  • 即使我将时间截断为 00:00:00,它仍然会将该时间转换为 UTC 时间并存储在 mongo 中
  • 正如我所提到的,您仍然会有一个完整的 Date 对象,时间显示为 UTC 午夜。正确的做法是正确格式化应用程序中的日期以仅显示相关部分。此外,通常您希望根据用户的时区格式化所有日期(无论是否包含时间),因为构成给定“日”的内容取决于您对给定时区的看法。
猜你喜欢
  • 1970-01-01
  • 2014-08-20
  • 1970-01-01
  • 2016-04-16
  • 2021-02-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多