【问题标题】:How do I tell momentjs/moment-tz that the string I'm giving it is already in the timezone I'm giving it? [duplicate]我如何告诉 momentjs/moment-tz 我给它的字符串已经在我给它的时区中? [复制]
【发布时间】:2021-02-03 20:54:33
【问题描述】:

让我发疯的小问题。我从 API 调用中以字符串形式获取时间,并且以两个单独的字符串形式获取时间所在的时区。我正在尝试创建一个使用这个给定数据的时刻,它以我的本地机器时区为起点并调整到给定的区域

let timeFromApi = "01 Jan 2021 15:00";             //That's 3pm, Eastern Standard Time
let timeZoneFromApi = "America/Indianapolis";     //Server says "time I gave is in EST"

如果我执行上述任一操作,请将本地计算机设置为 UTC:

let x = moment.tz(timeFromApi, timeZoneFromApi).format("YYYY-MM-DDTHH:mm:ss zz");
let y = moment(timeFromApi).tz(timeZoneFromApi).format("YYYY-MM-DDTHH:mm:ss zz");

然后它们最终都包含“2021-01-01 10:00 -05”..

Moment 似乎假设给定的字符串在本地机器所在的时区:如果我将本地机器设置为 EST,那么我会得到“2021-01-01 15:00 -05”,就像我预期的那样......

...但我根本不想阅读本地机器时间。我真的想给它一个时间,给它一个时区,让它在那个时区创建那个时间——我该怎么做?

【问题讨论】:

    标签: javascript momentjs moment-timezone


    【解决方案1】:

    经历过同样的麻烦,我可以告诉你

    let x = moment.tz(timeFromApi, timeZoneFromApi);
    

    是正确的方法。 documentation 也说这是这样做的方法。我怀疑你的问题是格式而不是解析。从 1.6 开始,zzz 格式化选项已被弃用(请参阅 https://momentjs.com/docs/#/displaying/)。所以我会稍微调整一下格式。

    【讨论】:

      猜你喜欢
      • 2014-05-29
      • 1970-01-01
      • 2021-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-30
      • 2017-11-15
      • 2019-12-23
      相关资源
      最近更新 更多