Mongodb日期时间插入

时间:2014-08-01 13:02:00

标签: java mongodb

我是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”)

2 个答案:

答案 0 :(得分:0)

Wahid,它的发生是因为

创建的日期
result.toDate() 

是当地时区的日期。

例如:

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

结果日期在

  

Tue Jul 29 07:23:06 IST 2014

根据我当地的时区。 MongoDB存储了纪元的日期。

在result.toDate()

之前添加以下代码
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));

它将创建UTC日期。

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

答案 1 :(得分:0)

感谢Ninad的帮助,

我对这个问题进行了排序,下面的代码是按原样在数据库中插入当前日期和时间。

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());

问候: 瓦希德