您的位置:首页 > 编程语言 > Java开发

mongo java driver日期转换问题

2014-09-05 11:59 218 查看

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 HH:mm:ss");
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个小时。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: