【问题标题】:How to consider daylight savings while converting utc to timezone [closed]如何在将UTC转换为时区时考虑夏令时[关闭]
【发布时间】:2021-08-02 02:24:59
【问题描述】:

为什么它在时刻 js 中不考虑夏令时。

const date_string = '2021-02-23T23:24:21Z';
const date_string1 = '2021-05-01T23:24:21Z';
console.log(moment.utc(date_string).tz("America/New_York").format('MM/DD/YYYY hh:mm:ss A'))
console.log(moment.utc(date_string1).tz("America/New_York").format('MM/DD/YYYY hh:mm:ss A'))

日志值:

//"02/23/2021 06:24:21 PM"

//"05/01/2021 06:24:21 PM"

momentjs默认不考虑夏令时,是否需要计算并添加?

【问题讨论】:

  • 我无法重现您在this jsFiddle 中使用此确切代码描述的行为。日志分别为"02/23/2021 06:24:21 PM""05/01/2021 07:24:21 PM"
  • 谢谢@esqew,你分享的小提琴奏效了。看起来,我在编辑器上使用的地方出了点问题,jsfiddle.net/awzfs1ch/2。它现在很好。谢谢。
  • 似乎包含moment-timezone-with-data-2010-2020.min.js 而不是(表面上更广泛的)moment-timezone-with-data.min.js 可能是造成这种情况的原因,但我对图书馆还不够熟悉,无法肯定地说。当然是切线的,但我建议完全删除对 momentjs 的这种依赖(除其他原因外,它处于“仅维护模式”,将来可能会被弃用),而是选择使用更现代的内置 @987654331 @ API,它应该能够执行您在此处说明的任务。
  • 是的,我刚刚被替换了那个时刻库,它现在可以工作了。 (我一直在使用错误的 js 库)jsfiddle.net/awzfs1ch/3。谢谢@esqew

标签: javascript momentjs utc moment-timezone


【解决方案1】:

将日期字符串和时区都传递给moment.tz 构造函数,因为它支持夏令时:

moment.tz(date_string, "America/New_York").format('MM/DD/YYYY hh:mm:ss A')

There's more detail here in the Moment Timezone docs:

这是一个工作示例:

https://codesandbox.io/s/momentjs-daylight-savings-time-75huj?file=/src/index.js

【讨论】:

猜你喜欢
  • 2014-06-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-04
  • 2014-09-07
  • 2015-08-04
相关资源
最近更新 更多