如何在 Javascript 中将 UTC/GMT 日期时间转换为 CST? (不是本地的,CST 总是)

新手上路,请多包涵

我有一个挑战,后端数据总是以 UTC 时间存储。我们的前端数据始终以 CST 格式呈现。我无权访问这个“黑匣子”。

我想在我们的数据仓库中反映这一点。它位于欧洲 (CET)。所以“本地”转换将不起作用。

我想知道将 UTC 时间(我可以使用纪元毫秒或日期格式“2015-01-01 00:00:00”)准确转换为中央标准时间的最简单、最直接的方法。 (根据夏令时,晚了 5 或 6 小时)。

我看到很多关于转换为“本地”时间的话题……我不想这样,我也不想简单地减去 6 个小时,这将是半年的错误。

有人有想法么?这似乎是一个非常普遍的问题,但我已经搜索了一段时间,但一无所获。

原文由 user45867 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 492
1 个回答

moment.jsmoment-timezone 插件一起使用可以使这项任务变得简单。

 // construct a moment object with UTC-based input
var m = moment.utc('2015-01-01 00:00:00');

// convert using the TZDB identifier for US Central time
m.tz('America/Chicago');

// format output however you desire
var s = m.format("YYYY-MM-DD HH:mm:ss");

此外,由于您指的是整个北美中部时区,因此您应该说“中部时间”或“CT”。适用于北美的缩写“CST”明确表示 UTC-6,而缩写“CDT”将用于夏令时期间的 UTC-5。

不过要小心缩写。 “CST”可能意味着“中国标准时间”。 (它实际上有 五种不同的解释)。

原文由 Matt Johnson-Pint 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题