【问题标题】:How to parse moment into specific timezone from moment.unix()如何从 moment.unix() 解析时刻到特定时区
【发布时间】:2020-02-18 23:48:11
【问题描述】:

我有一个时间戳的初始值(在用户 1 的时区创建)我正在从 firebase 的 firestore 中检索。这个格式是从 Unix 纪元开始的 UTC 秒数。

我的目标是获取初始时间戳值,并将其转换为当前用户的时区。如果我使用

moment.unix(initial_In_Seconds).format("H:mma") 我得到了正确的初始时间。使用.unix() 是我能够获得正确初始时间的唯一方法。现在我需要将其转换为特定的时区。可以说“美国/丹佛”(初始时区是 GMT -05:00)

到目前为止,我在任何合并中都没有成功使用 moment.tz()

我试过了:

moment.tz(moment.unix(initial_In_Seconds).format("H:mma"), "America/Denver")

let unix = moment.unix(initial_In_Seconds).format("H:mma");
let parsed = moment.tz(unix, "America/Denver");

如何解析? Moment.js 让我很困惑

【问题讨论】:

    标签: javascript date momentjs


    【解决方案1】:

    如果您的时区偏移是使用 IANA 代表位置指定的,例如“美国/丹佛”,那么您可以使用 toLocaleString,前提是这些位置不太模糊(即不受ECMAScript 实现可能会运行您的代码),例如

    function timeValueWithTimezone(unixOffset, loc) {
      let d = new Date(unixOffset * 1000);
      return d.toLocaleString(void 0, {
        hour12: true,
        hour: 'numeric',
        minute: '2-digit',
        timeZone: loc
      });
    }
    
    let timeValue = 1582090120;
    let loc = 'America/Denver';
    
    console.log('At your local time: ' +
      new Date(timeValue * 1000).toLocaleString(void 0, {
        hour12: true, 
        hour: 'numeric', 
        minute: '2-digit'
    }));
    console.log('Denver local time is: ' + timeValueWithTimezone(timeValue, loc));

    【讨论】:

      【解决方案2】:

      进一步的演奏产生了更好的结果:

      moment
       .tz(moment.unix(props.navigation.state.params.time.start.seconds),'America/Denver')
       .format('H:mma')
      

      不幸的是,在下午的时间里,它给了军事时间......我对 12 小时格式感兴趣......

      编辑:更改 -> .format('h:mma') 产生 12 小时格式

      【讨论】:

        猜你喜欢
        • 2019-09-06
        • 2021-10-21
        • 2012-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-28
        • 1970-01-01
        • 2023-03-14
        相关资源
        最近更新 更多