您的位置:首页 > 数据库 > Mongodb

mongodb java driver日期转换问题

2013-06-13 19:53 477 查看



https://github.com/ewcmsfree/ewcms/wiki/Help-mongo-java-driver-date

mongo保存日期是一个64-bit整形数。java driver保存Date时会把他自动转换为标准时间GMT。如中国在GMT+8时区,保存2012-01-20 00:00:00到库中,查询后结果竟然是2012-01-19 16:00:00跟想要结果不一致。 可以在com.mongodb.util.JSON找到问题根源:

if (o instanceof Date) {
Date d = (Date) o;
SimpleDateFormat format =
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
format.setCalendar(new GregorianCalendar(new SimpleTimeZone(0, "GMT")));
serialize(new BasicDBObject("$date", format.format(d)), buf);
return;
}


找到问就好办,自己完成日期的转换:

SimpleDateFormat

SimpleDateFormat format =
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
format.setCalendar(new GregorianCalendar(new SimpleTimeZone(0, "GMT")));
Date date = format.parse("2012-01-20 00:00:00");


date日期变成2012-01-20 08:00:00+08也就是在GMT+8时区下自动加8个小时。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: