从Java在MongoDB文档中插入日期

时间:2015-04-09 08:59:56

标签: mongodb-java

我正在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读取它时,我觉得它很无用(我宁愿使用普通的键字符串)。

1 个答案:

答案 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")),您应该能够看到期望值。