在 momentjs 中处理 DST 的问题

Posted

技术标签:

【中文标题】在 momentjs 中处理 DST 的问题【英文标题】:Issue with handling DST in momentjs 【发布时间】:2018-08-05 20:43:56 【问题描述】:

我有一个关于。

假设我目前处于 GMT+1 时区并遵守标准(冬季)时间,因此我的 UTC 偏移量为 +01:00。如果我执行: moment('2018-02-26T10:12:00+01:00').format('LLL') 我会得到"26 February 2018 10:12",正如我所料。

但是,如果我执行 moment('2018-04-26T10:12:00+01:00').format('LLL')(所以日期在 DST 期间)我会得到 "26 April 2018 11:12" 所以看起来 momentjs 没有考虑从现在到那个之间发生的 DST 切换日期。

这实际上是预期的行为吗?

【问题讨论】:

【参考方案1】:

这确实是预期的行为,并且 Moment 工作正常。

您已在输入时间中指定了偏移量+01:00,但当时在您当地时区中有效的偏移量实际上是+02:00(假设大多数欧洲地方在 CET/CEST)。因此,您描述的瞬间是一个小时的休息时间,因此您的结果是一个小时的休息时间。

如果您从输入中省略偏移量,您将看到 Moment 的行为符合您的预期。

【讨论】:

以上是关于在 momentjs 中处理 DST 的问题的主要内容,如果未能解决你的问题,请参考以下文章

用 momentJS 正确处理 DST 偏移

在 DST 过渡期间增加几个小时

如何使用 fullcalendar 处理 DST 显示混乱

ConvertTimeFromUtc() 和 ToUniversalTime() 是不是处理 DST?

如何在 EJS 视图中使用节点模块(如 MomentJS)?

无法在momentjs中选择minDate