我有一个mongodb查询在我的本地机器上工作得很好,但是在我的生产环境(Heroku)上,它的工作方式并不相同。例如,我在EST时区,我的生产服务器返回前一天的事件,如果它们发生在美国东部时间晚上8点之后(因为距离UTC有4小时的偏差)。我将我的所有日期以UTC格式存储在我的mongodb数据库中,并在查询数据时转换为本地时区。再一次,在我的本地测试环境中一切正常。这是我正在使用的查询:
Event.find({
'starts': {
'$gte':moment(req.query.date+'T00:00:00.000').tz(req.user.tz).format(),
'$lte':moment(req.query.date+'T23:59:59.999').tz(req.user.tz).format()
},
})
.exec(function(err, data) {
if (err) {
console.log('ERROR = ' + err);
} else {
return res.json(data);
}
});
我做错了什么?我确保我的Heroku应用程序设置为UTC。另一件事是我的mongo数据库是通过MongoLab托管的。任何建议都会非常感激。
答案 0 :(得分:0)
我不确定这是否是您要求的,但如果您想使用指定的时区进行解析,那么:
moment.tz(req.query.date,'YYYY-MM-DD',req.user.tz).format()