Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.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 setFullYear增加1小时-需要解释_Javascript_Date - Fatal编程技术网

Javascript setFullYear增加1小时-需要解释

Javascript setFullYear增加1小时-需要解释,javascript,date,Javascript,Date,当我尝试使用.setFullYear()(或.setUTCFullYear()-相同的结果)为日期增加一年时,请帮助我理解预期结果与现实之间的差异 设置: let timestamp='2010-10-12T12:00:00Z'; const initialDate=新日期(时间戳); const resultingDate=新日期(initialDate.setFullYear(2020)); log('timestamp:'+timestamp); console.log('initial

当我尝试使用
.setFullYear()
(或
.setUTCFullYear()
-相同的结果)为日期增加一年时,请帮助我理解预期结果与现实之间的差异

设置:

let timestamp='2010-10-12T12:00:00Z';
const initialDate=新日期(时间戳);
const resultingDate=新日期(initialDate.setFullYear(2020));
log('timestamp:'+timestamp);
console.log('initialDate:'+initialDate.toISOString())

console.log('resultingDate:'+resultingDate.toISOString())
问题与2014年莫斯科时间发生的事情有关。见:


实际上,莫斯科于2014年10月26日从UTC+4改为UTC+3。因此,2010年10月12日,莫斯科的16:00是UTC时间的12:00。但是,从2015年开始,莫斯科的16:00是UTC时间的13:00。因此,2014年之前的日期显示为12:00,之后的日期显示为13:00。

问题与2014年莫斯科时间发生的事情有关。见:


实际上,莫斯科于2014年10月26日从UTC+4改为UTC+3。因此,2010年10月12日,莫斯科的16:00是UTC时间的12:00。但是,从2015年开始,莫斯科的16:00是UTC时间的13:00。因此,2014年之前的日期将显示为12:00,之后的日期将显示为13:00。

不知道额外的1小时,但FYI
setFullYear
会对
初始日期进行变异。因此,您的
初始日期
应该等于
结果日期
。谢谢,我知道。故事的重点是由此产生的“13”而不是“12”。如果我擦去时间(通过
新日期(新日期(dateStart).toISOString().substr(0,10))
)-结果变成
…T01:00…
一小时增益-它来自哪里?你不能像那样比较日期。如果打印
initialDate
,是否还有+1小时?更新:如果
initialDate
的年份为2015年、2016年、2017年、2018年等,则设置为2020年不会影响时间。但是,如果年份为2014年及以下(2013年、2012年等),则此操作会将时间增加1小时。不,它不会。。。但我和你不在同一时区-你的时区是否有DST变化?不知道额外的1小时,但仅供参考
setFullYear
会改变
初始日期。因此,您的
初始日期
应该等于
结果日期
。谢谢,我知道。故事的重点是由此产生的“13”而不是“12”。如果我擦去时间(通过
新日期(新日期(dateStart).toISOString().substr(0,10))
)-结果变成
…T01:00…
一小时增益-它来自哪里?你不能像那样比较日期。如果打印
initialDate
,是否还有+1小时?更新:如果
initialDate
的年份为2015年、2016年、2017年、2018年等,则设置为2020年不会影响时间。但是,如果年份为2014年及以下(2013年、2012年等),则此操作会将时间增加1小时。不,它不会。。。但我和你不在同一时区-你的时区中是否有DST更改?你可以尝试使用构造日期,因为它不参考本地时区。你可以尝试使用构造日期,因为它不参考本地时区。