【问题标题】:How to display Datetime considering offset using MomentJS with Timezones如何使用带时区的 MomentJS 显示日期时间考虑偏移
【发布时间】:2016-08-22 14:09:03
【问题描述】:

我正在使用带有时区的 moment.js 来创建属于特定时区的日期时间:

var datetime = moment.tz("2016-08-16 21:51:28","Europe/London");

因为这个构造函数知道 DST(夏令时),moment.js 将自动添加 +1 小时偏移量。 datetime.format() 将显示:2016-08-16T21:51:28+01:00

但是在打印日期时似乎没有考虑偏移量。例如。 datetime.format('DD.MM.YYYY - HH:mm:ss') 将显示:16.08.2016 - 21:51:28,但我不想显示:16.08.2016 - 22:51:28(考虑 DST 偏移 1 小时的时间)。有谁知道怎么做?

【问题讨论】:

标签: javascript jquery momentjs


【解决方案1】:

你误解了你得到的输出。

当您在 ISO8601 时间戳末尾看到 +01:00 时,这并不意味着您需要添加一个小时。这意味着给定的时间戳位于本地时区,该时区比 UTC 时间早一小时。时刻不会增加一个小时。它只是反映了伦敦的当地时间。

对于您提供的时间戳,显示 22:51:28 将是一个错误。伦敦当地时间为21:51:28,对应的UTC时间为20:51:28。在您前往东部的一个时区(UTC+2)之前,您不会找到22:51:28

现在,如果您打算从 UTC 转换为伦敦时间,那么您需要将输入创建为 UTC,然后进行转换。

moment.utc("2016-08-16 21:51:28").tz("Europe/London")

然后你会在格式化时得到22:51:28,这是你要求的结果,但这是一个不同的时间点。

【讨论】:

    猜你喜欢
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    相关资源
    最近更新 更多