使用dayjs将Unix时间戳转换为UTC+0时区为何出现偏移异常
问题原因
你得到+01:00的时区结果属于正常现象,Europe/London是包含夏令时规则的地区时区:每年3月最后一个周日至10月最后一个周日会执行夏令时,时间相比标准UTC快1小时。你测试的时间为2021年5月20日,正好处于伦敦夏令时生效周期内,因此转换后自动适配为夏令时的+01:00偏移,并非方法调用出错。
解决方法
如果你需要固定获取+0:00时区(即UTC标准时间)的转换结果,有两种常用方案:
- 方案1:直接调用dayjs内置的
utc()方法转换,无需额外依赖地区时区规则:
console.log("UTC TIMESTAMP: ", dayjs.unix(timestamp).utc().format()); // 输出结果:2021-05-20T11:46:07+00:00
- 方案2:如果需要通过
tz()方法指定时区,使用无夏令时调整的固定UTC时区Etc/UTC:
console.log("FIXED TIMESTAMP: ", dayjs.unix(timestamp).tz("Etc/UTC").format()); // 输出结果:2021-05-20T11:46:07+00:00
注意:使用
tz()方法前需要确保已正确引入并注册dayjs/plugin/utc、dayjs/plugin/timezone两个插件,以及对应的时区数据。
内容的提问来源于stack exchange,提问作者markWanka
相关产品推荐
相关产品推荐

