【问题标题】:Mongo Db date time insertionMongodb 日期时间插入
【发布时间】:2014-09-24 16:42:57
【问题描述】:

我在 mongoDb 中较新,尝试使用 Java 程序插入当前日期时间。我正在使用 joda 库将日期格式化为 ISOdate 格式,并希望按原样存储当前日期和时间。但是在插入后,它在数据库中显示与我当前时间相比有 1 小时的延迟时间。

这是我的代码。

    DateTimeFormatter parser=ISODateTimeFormat.dateHourMinuteSecond();
    Instant inst=new Instant();
    DateTime result=parser.parseDateTime(parser.print(inst));
    dbObject.put(KeyConstants.CREATED_ON,result.toDate());
    dbObject.put(KeyConstants.UPDATED_ON,result.toDate());
    collection.insert(dbObject); 

我正在插入当前日期和时间:ISODate("2014-08-01T05:58:14Z")
但在数据库中显示:ISODate("2014-08-01T06:58:14Z")

【问题讨论】:

  • 检查 result.toDate() 的输出,它可能正在创建相对于时区的日期
  • 谢谢:是的,它正在创建但未将其存储在 mongodb 数据库中,将 1 小时前向时间存储到数据库中
  • 能否显示由 result.toDate() 创建的日期

标签: java mongodb


【解决方案1】:

Wahid,它的发生是因为

result.toDate() 

是与当地时区的日期。

例如:

DateTimeFormatter parser=ISODateTimeFormat.dateHourMinuteSecond();      
DateTime result=parser.parseDateTime("2014-07-29T07:23:06");
System.out.println(result.toDate());

结果日期在

2014 年 7 月 29 日星期二 07:23:06 IST

这是根据我当地的时区。 而 MongoDB 存储的日期是从 epoch 开始的。

在result.toDate()之前添加如下代码

TimeZone.setDefault(TimeZone.getTimeZone("UTC"));

它将创建 UTC 日期。

您可以参考date 文档以了解 mongoDB 中的日期 希望这对您有所帮助。

【讨论】:

    【解决方案2】:

    感谢尼纳德的帮助,

    我解决了这个问题,下面的代码按原样在数据库中插入当前日期和时间。

    DateTimeFormatter parser=ISODateTimeFormat.dateHourMinuteSecond();
    LocalDateTime dt=new LocalDateTime();
    LocalDateTime result=parser.parseLocalDateTime(parser.print(dt));
    TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
    dbObject.put("CREATED_ON",result.toDate());
    dbObject.put("UPDATED_ON",result.toDate());
    

    问候: 瓦希德

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多