嗨,我在实现从mongoDB删除1个月大文档的逻辑时遇到了以下问题。
下面是代码和输出…

currDate = new Date();   // value is : Tue Nov 26 15:22:10 **EST** 2013
Calendar calDate = Calendar.getInstance();
calDate.setTime(new Date());
calDate.add(Calendar.MONTH,-1);
currDateMinusOneMonth =  calDate.getTime(); // value is : Sat Oct 26 15:22:10 **EDT** 2013

Criteria c1 = Criteria.where("publishDate").lt(currDateMinusOneMonth);
Query query = new Query(c1);
logger.info("Query to find 1 month old documents: " + query.toString()); -->
{"publishDate" : { "$lt" : { "$date" : "2013-10-26T**19**:22:10.571Z"}}}


不知何故,它会使查询中的时间增加4个小时。不知道为什么会这样。我们如何避免这种情况?

当我如下替换条件时

Criteria c1 = Criteria.where("publishDate").lt(**currDate**);


它增加了5个小时而不是4个小时。猜猜是因为currDate值在EST中而不是EDT中。谢谢。

最佳答案

它增加了4个小时,因为该日期以UTC显示,比EDT早4个小时(这是一个月前的正确时区)。我认为这里没有问题。

10-06 11:29