Javascript中如何计算UTC当前时间与1970/01/01的毫秒时间差
问题原因
计算结果偏差的核心原因是作为减数的1970/01/01基准时间没有使用UTC时区解析:你现有代码中初始化的B是本地时区(GMT+1)的1970年1月1日0点,对应UTC时间为1969年12月31日23点,和预期的GMT0基准时间相差3600000毫秒,最终导致计算结果不符合要求。
解决方法
方法1:原生JS实现(无需第三方库)
JS原生内置的Date.now()方法直接返回当前UTC时间与1970年1月1日UTC 0点的毫秒级差值,完全匹配需求,仅需一行代码即可实现:
const utcTimestamp = Date.now(); console.log(utcTimestamp);
方法2:修正moment.js写法
仅需调整基准时间B的初始化逻辑,使用UTC模式解析时间即可:
const A = moment.utc(); // 以UTC模式解析日期,得到GMT0时区的1970/01/01 0点基准值 const B = moment.utc('19700101', 'YYYYMMDD'); const diff = A.diff(B, 'milliseconds'); console.log("Milisec diff : ", diff);
补充说明
你现有代码中的A本身确实为UTC时间,diff方法也可正常读取A的UTC时间值,问题完全来源于B的时区错位,修正后两个时间均为UTC时区,计算结果即可对齐预期。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

