我正在Java中的MongoDB密钥中插入Date,如下所示:
DateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = (Date)formatter.parse("1-Apr-1970");
BasicDBObject doc = new BasicDBObject("name", "john").append("birthdate", date);
查询文档,结果如下:
{ "_id" : { "$oid" : "55263cd3d3d584440534f0a4"} , "name" : "john" ,
"birthdate" : { "$date" : "1970-03-31T23:00:00.000Z"}}
如你所见,月份不是我的预期(04)。有没有更好的方法从Java插入MongoDB中的日期?事实上,当我尝试从Java读取它时,我觉得它很无用(我宁愿使用普通的键字符串)。
答案 0 :(得分:2)
这是因为在BasicDbObject中实现了toString()方法。默认情况下,日期打印如下:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
format.setCalendar(new GregorianCalendar(new SimpleTimeZone(0, "GMT")));
所以你有时间参加GMT时区。如果您尝试获取日期(例如:dbObject.get(" birthdate")),您应该能够看到期望值。