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

Javascript Date对象返回错误时区偏移问题及解决方法

问题原因及修复方案

问题出在哪?

你当前的代码逻辑绕了个无效的弯路:先用toLocaleString生成新德里时区的时间字符串,再把这个字符串转成Date对象。但Date对象本质是基于UTC的时间戳,转的时候会用本地时区去解析这个字符串,相当于把新德里时间当成了本地时间来处理。最后再调用toLocaleString时没指定时区,自然就显示本地时区的偏移(比如你的GMT+2),而不是新德里的GMT+5。

修复方法

直接跳过中间转Date对象的步骤,在最终格式化的时候指定目标时区即可:

const options = {
  dateStyle: "long",
  timeStyle: "long",
  timeZone: "Asia/Kolkata" // 直接在这里指定目标时区
};

// 直接用当前时间结合指定时区的配置格式化
document.querySelector('#timezone-date-time').innerHTML = new Date().toLocaleString("en-US", options);

为什么这样可行?

toLocaleString方法本身就支持通过timeZone参数,直接将UTC时间戳格式化为指定时区的字符串,不需要额外的转换步骤。这样输出的日期、时间和时区偏移都会是新德里时区的正确值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:35:20