Javascript MomentJS,UTC时间戳,这是问题还是错误?很少有疑问

Javascript MomentJS,UTC时间戳,这是问题还是错误?很少有疑问,javascript,momentjs,Javascript,Momentjs,使用moment().valueOf()和moment.utc().valueOff()时,我没有发现时间戳有任何差异,我的时区偏移为+5 console.log(moment().valueOf()) console.log(moment().valueOf()) console.log(moment().utc().valueOf(), moment().valueOf(), '=', moment().utc().valueOf() - moment().valueOf()) >

使用
moment().valueOf()
moment.utc().valueOff()
时,我没有发现时间戳有任何差异,我的时区偏移为+5

console.log(moment().valueOf())
console.log(moment().valueOf())
console.log(moment().utc().valueOf(),  moment().valueOf(), '=', moment().utc().valueOf() -  moment().valueOf())

> 1564388008550
> 1564388008551
> 1564388008551 1564388008551 "=" 0

预计必须相差5小时?或者可能是我们的观点是错误的通常时间戳总是在UTC?这就是为什么两个方法都提供相同的时间戳!我们只能在格式化的日期字符串中找到差异?

矩。js实例是本机日期对象的包装器,它使用的时间值始终是UTC。不同的时区可用于显示日期(时间戳),但时间值不变

默认情况下,矩的输出是本地的。utc方法将矩实例设置为utc模式,因此默认情况下,输出显示为utc。它不会更改时刻实例包装的日期中心的UTC时间值,例如

设m=力矩();
console.log('time value:'+m.valueOf());//实例的时间值
console.log('本地时间戳:'+m.format());//主机时区中的时间戳
m、 utc();//设置为UTC模式,因此默认值为UTC
console.log('time value:'+m.valueOf());//时间值不变
console.log('UTC时间戳:'+m.format());//无时区的等效时间戳(UTC)

时间戳不知道时区是什么,因此您的时间戳将始终以UTC为单位,如果需要,则需要在其上添加时区时间戳是日期和/或时间的任何表示形式。在OP中,1564388008550是一个时间戳,如果你知道它是1970-01-01的毫秒偏移量,否则它只是一个数字。ECMA-262将该数字称为时间值。时区更改UTC的偏移量,因此更改时区偏移量只会更改显示的日期和时间(时间戳),而不会更改时间值。utc方法只是将默认值设置为utc(即无时区),因此显示的时间戳更改为utc,而不是时间值。@jonatjano和RobG-感谢您确认timstamp始终为utc