Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript设置时间(1)2011年3月27日格林尼治标准时间01:00:00+;0100_Javascript_Date - Fatal编程技术网

Javascript设置时间(1)2011年3月27日格林尼治标准时间01:00:00+;0100

Javascript设置时间(1)2011年3月27日格林尼治标准时间01:00:00+;0100,javascript,date,Javascript,Date,我完全搞不懂为什么这样不行 我迭代了一个日期范围,一步一步地增加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 >>&

我完全搞不懂为什么这样不行

我迭代了一个日期范围,一步一步地增加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中也有同样的bug

导致此行为的夏令时。 3月27日是DST开始的日子

编辑:


希望这能解决您的问题:

只是一个猜测:这可能与夏令时有关吗?

我遇到了与您相同的问题,并用

Date.prototype.addHours = function (h) {
    this = new Date(this.getTime() + h*3600000);
    return this;
}

我不确定创建一个新的日期对象是否是一个好主意,但它对我来说很有效

我知道这个问题已经很老了,但如果其他人遇到这个问题,使用UTC方法,您可以避免这种行为:

Date.prototype.addHours = function (h) {
    this.setUTCHours(this.getUTCHours() + h);
    return this;
}

有时它被称为“夏季”。事物转换的日期因国家而异(有时甚至在政治粒度上更精细)。啊哈,好的。我该怎么办?如果可能的话,我想保留我的递增计数器。谢谢你的编辑。我想我可以在每个环路中检查夏令时。但希望能找到更简单的方法。