我是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”)
答案 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());
问候: 瓦希德