【问题标题】:Convert ISO/UTC date to local by displaying timezone javascript/momentjs通过显示时区 javascript/momentjs 将 ISO/UTC 日期转换为本地日期
【发布时间】:2019-05-22 20:22:23
【问题描述】:

我有一个格式为 2019-05-18T19:30:00-0400 的日期,我需要使用 momentjs 或纯 JavaScript 将其显示为 05/18/2019 07:30 PM EST .我尝试了几种方法,例如 moment(new Date('2019-05-18T19:30:00-0400')).format('MM-DD-YYYY h:mm A zz')

【问题讨论】:

  • 我试过这个,moment('2019-05-18T19:30:00-0700').format('DD/MM/YYYY h:mm A zz') 显示它像 18 /05/2019 7:30 PM,但没有时区值
  • 如果您想使用纯 JavaScript,请查看 toLocaleString()。如果您想使用 moment,请查看 moment-timezone,您可能会有类似:moment.tz('2019-05-18T19:30:00-0400', 'America/New_York').format('MM/DD/YYYY hh:mm A zz')。另请参阅this question
  • 当我得到日期字符串时,我不知道时区(美国/纽约)的详细信息。它可以是任何偏移量为 2019-05-18T19:30:00+0100 的任何日期,如果我使用 toLocaleString(),它会将其转换为浏览器的时区,而不是日期字符串中表示的时区。

标签: javascript datetime timezone momentjs


【解决方案1】:

仅从偏移量来确定时区是不可能的。有许多偏移量属于多个时区。因此呈现缩写是不可能的。

有关更多详细信息,请参阅时区标记 wiki 中的 Time Zone != Offset,如果您需要示例,请参阅 list of tz database time zones

但是,从您的 cmets 看来,您还希望保持与给定相同的本地时间和偏移量。 Moment 可以使用它的(命名不当)parseZone 函数来帮助解决这部分问题:

moment.parseZone("2019-05-18T19:30:00+0100").format("MM/DD/YYYY hh:mm A ZZ")
//=> "05/18/2019 07:30 PM +0100"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 2015-06-30
    • 2023-03-23
    • 2019-08-31
    • 2012-10-07
    相关资源
    最近更新 更多