您好,我在实现从 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 值是东部时间而不是东部时间。谢谢。
最佳答案
它增加了 4 小时,因为该日期以 UTC 格式显示,比 EDT(一个月前的正确时区)早 4 小时。我不认为这里有问题。
关于java - MongoDb TimeZone 中的日期查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20227747/