我试图在startDate和endDate之间使用“date”字段获取所有记录。根据日期筛选Mongodb时区问题
我查询这个数据库(从月初的得到记录,直到今天):
var startDate = new Date(2017,09,1);
var endDate = new Date(2017,09,7);
//console.log(startDate) = Sun Oct 01 2017 00:00:00 GMT-0300 (BRT)
//console.log(endDate) = Sat Oct 07 2017 00:00:00 GMT-0300 (BRT)
Sale.find({date:{"$gte":startDate,"$lt":endDate}},function(err, sales){
}
记录与10/02和10/07并恢复之间的日期,但记录了日期10/01没有被退回。下面是对这些缺失的记录日期字段:
"date": {
"$date": "2017-10-01T23:00:00.000Z"
}
我小时设置为23,看它是否会有所作为(时区等),但事实并非如此。
如果我将startDate设置为9月30日23小时,则无。小时22,21,没什么。 当startDate变为9月30日20小时宾果时,返回记录。
这可能是一个时区问题,但我无法确定在哪里以及如何。
在JS,'新的Date(2017,09,1) ;'return'Wed Nov 01 2017 00:00:00 GMT-0400(EDT)'因为0是1月份。但是,这并不能解释你所看到的行为。 –
将数据写入MongoDB的时区是什么时区? UTC还是本地? –
本地,但是应该是新的Date()对象吗?我用日期的console.log更新了问题。 –