mongodb查询日期

1、
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;
  }
解决办法先给补上8小时
时间型:
 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");
日期型:
 SimpleDateFormat format = 
        new SimpleDateFormat("yyyy-MM-dd");
 format.setCalendar(new GregorianCalendar(new SimpleTimeZone(0, "GMT")));
 Date date = format.parse("2012-01-20");



版权声明:本文为u011053107原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。