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

为何Luxon DateTime.offset与原生JavaScript Date.getTimezoneOffset返回值相反?

为什么Luxon的DateTime.offset与原生Date.getTimezoneOffset返回值相反?

这是因为两者遵循的时区偏移定义标准完全不同:

  • 原生JavaScript的Date.getTimezoneOffset():返回的是本地时间与UTC时间差值的相反数,单位为分钟。它代表「将本地时间转换为UTC时间需要加上的分钟数」。比如夏威夷时区(UTC-10),本地时间比UTC晚10小时,所以返回10*60=600分钟。

  • Luxon的DateTime.offset:严格遵循ISO 8601标准,直接返回本地时间相对于UTC的偏移量:UTC以东时区为正,以西为负。夏威夷时区属于UTC-10,因此返回-600分钟。

代码示例验证

import { DateTime } from 'luxon';

const luxonOffset = DateTime.now().offset; // -600(夏威夷时区)
const jsDateOffset = new Date().getTimezoneOffset(); // 600(夏威夷时区)

Luxon的处理逻辑

Luxon在系统时区的处理代码中,确实会对原生getTimezoneOffset()的返回值进行反转:通过取原生结果的负数,将其转换为符合ISO 8601标准的偏移值,这就是两者数值相反的直接原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:01:29