You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js中获取时区RAW Offset?现有代码输出错误

解决moment-timezone获取标准时区偏移(raw_offset)的问题

你当前使用utcOffset()得到的是当前时间的实际时区偏移,包含夏令时的调整,这就是它和worldtimeapi返回的raw_offset(标准时区偏移,不含夏令时)不一致的原因。

要获取对应时区的标准偏移(即raw_offset),可以借助moment-timezone的时区对象来实现:

const moment = require("moment-timezone");
let timezone = "Europe/Warsaw";
// 获取目标时区的时区规则对象
let tzZone = moment.tz.zone(timezone);
// 获取标准偏移(单位为分钟,转换为秒需乘以60)
let timezone_raw = tzZone.utcOffset() * 60;
console.log(timezone_raw); // Europe/Warsaw的raw_offset为3600,与worldtimeapi返回值一致

关键说明

  • moment.tz.zone(timezone)返回的是对应时区的规则对象,包含该时区的标准偏移、夏令时切换规则等信息。
  • 该时区对象的utcOffset()方法返回的是标准时间下的固定偏移(单位:分钟),不会受夏令时影响,对应worldtimeapi中的raw_offset(单位:秒,所以需要乘以60转换)。
  • 你之前使用的moment实例的utcOffset(),返回的是当前时间点该时区的实际偏移,会随夏令时周期变化,因此无法直接得到raw_offset。

内容的提问来源于stack exchange,提问作者Bootloader Project

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 23:45:43