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更改?你可以尝试使用构造日期,因为它不参考本地时区。你可以尝试使用构造日期,因为它不参考本地时区。