我在Rails中使用mongoid并按日期将地图缩小为输出帖子。在本地,它按预期工作,但是当我使用Heroku / MongoLab部署它时,其中一个日期计数比它应该落后一个月。
图:
function() {
emit(new Date(this._revisions.publish_date.getFullYear(), this._revisions.publish_date.getMonth(), 1), {count: 1});
}
减少
function(key, values) {
var result = {count: 0}
values.forEach(function(value) {
result.count += value.count;
});
return result;
}
本地结果1月1日,7月2日正确 远程结果1月1日,2月6月
我知道JavaScript中有0个索引月,但我认为这不是问题,因为它在本地工作正常。这可能是一个时区问题,但不确定为什么会导致它在一个月后关闭。
我将记录中的日期更改为7月2日而非7月1日,并按预期执行。不确定为什么7月1日是6月排放,而7月2日是7月排放。似乎是一个问题,一个月的1月1日的所有日期都会在上个月发出,为什么这只会发生在远程服务器而不是本地服务器上。
答案 0 :(得分:0)
根本问题在于你在操作中使用Date
的本地时间方法。一个时区的7月1日日期可以是6月30日在另一个时区。
解决方案是使用Date
的UTC方法而不是本地方法,以便日期处理不受主机服务器时区的影响。