0
你好我得到以下问题,同时实现逻辑从MongoDB中取出1个月大的文件。 下面是代码和输出...日期查询MongoDB中时区问题
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.Thanks。
所以预期右它将运行查询?我不需要担心执行日期是4个小时? – NewQueries
是的,它应该调整他们都来自同一个时区来比较,所以应该是“正确的”。但它真的很重要吗?我的意思是,的“一个月前”的定义似乎有点主观反正(有些月份有31天,其他有28)。如果你的文件太早/删除一个小时,四晚,是要损害你的业务流程? –
不是,在这种情况下,没关系。我只是想知道如果有时间关键的应用程序。但是这有很大帮助。现在我可以尝试一些非常重要的事情。谢谢。 – NewQueries