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

使用moment-timezone将America/Dawson时区时间转America/New_York失败求助

问题分析与修正

原代码的核心问题是没有正确构建America/Dawson时区的上午9:00时间,具体问题点:

  • new Date()创建的是基于你本地(印度)时区的日期对象,setHours(9,0,0)设置的是印度时区的上午9点,而非目标时区的时间。
  • 虽然调用了moment.tz.setDefault('America/Dawson'),但moment(currentDate)依然是把本地时区的Date实例转换为moment对象,并没有关联到Dawson时区的时间基准。

正确实现方式

方式一:直接创建指定时区的今日9点时间

// 直接构建America/Dawson时区的今日上午9:00
const dawsonTime = moment.tz('09:00', 'HH:mm', 'America/Dawson');
// 转换为America/New_York时区并格式化输出
const newYorkTime = dawsonTime.tz('America/New_York').format('YYYY-MM-DD HH:mm:ss ZZ');
console.log(newYorkTime);

方式二:基于Dawson时区的当前日期设置9点

如果需要确保使用Dawson时区的"今日"来设置9点,可以用以下写法:

// 设置moment默认时区为America/Dawson
moment.tz.setDefault('America/Dawson');
// 获取Dawson时区的当前日期,将时间设为9:00:00
const dawsonTime = moment().set({ hour: 9, minute: 0, second: 0 });
// 转换为America/New_York时区
const newYorkTime = dawsonTime.tz('America/New_York').format('YYYY-MM-DD HH:mm:ss ZZ');
console.log(newYorkTime);

这两种写法都会先正确生成Dawson时区的上午9点,再转换为New York时区的时间,确保结果符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 06:07:47