我完全不知道为什么这不起作用?
我正在迭代日期范围,只需逐步添加1小时。直到本周,这个工作正常。基本上直到日期为2011年3月27日01:00:00 GMT + 0100。然后它只是卡住而不添加任何东西。如果我加+ 3h然后再次使用,但不能+1。
我在Firefox上使用Firebug,并在控制台中尝试过。
Sun Mar 27 2011 01:00:00 GMT+0100
>>> this.setHours(0);
1301180400000
>>> this.setHours(1);
1301184000000
>>> this.setHours(2);
1301184000000
>>> this.setHours(3);
1301187600000
这是代码:
Date.prototype.addHours = function (h) {
this.setHours(this.getHours() + h);
return this;
}
我在Safari和Chrome中遇到了同样的错误。
答案 0 :(得分:5)
答案 1 :(得分:2)
只是一个猜测:它可能与夏令时有关吗?
答案 2 :(得分:2)
我知道这个问题已经很老了,但是为了防止其他人遇到这个问题,使用UTC方法可以避免这种行为:
Date.prototype.addHours = function (h) {
this.setUTCHours(this.getUTCHours() + h);
return this;
}
答案 3 :(得分:1)
我遇到了和你一样的问题并用
解决了Date.prototype.addHours = function (h) {
this = new Date(this.getTime() + h*3600000);
return this;
}
我不确定创建一个新的Date对象是否是一个好主意,但它对我有用。