在来自 Java 的 MongoDB 文档中插入日期
Inserting a Date in a MongoDB Document from Java
我在 Java 的 MongoDB 键中插入一个日期,如下所示:
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 读回它时,我发现它毫无用处(我宁愿使用普通的键字符串)。
发生这种情况是因为在 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")),您应该能够看到预期值。
我在 Java 的 MongoDB 键中插入一个日期,如下所示:
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 读回它时,我发现它毫无用处(我宁愿使用普通的键字符串)。
发生这种情况是因为在 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")),您应该能够看到预期值。