【问题标题】:Moment Timezone: varying (and wrong) results时刻时区:不同(和错误)的结果
【发布时间】:2016-04-05 01:38:40
【问题描述】:

我使用moment.jsMoment Timezone 来处理不同时区的ISO 日期。但是,我一定是做错了什么,因为我从解析中得到的结果是完全错误的,即使据我所知,我并没有做任何奇怪的事情。

例如,取这个日期:2015-11-23T08:56:38.646Z

现在,正常的解析和格式输出可以预期:

moment("2015-11-23T08:56:38.646Z").format()

结果:"2015-11-23T09:56:38+01:00"

但是,如果我将非本地 TZ 加入其中,事情就会很快出错:

moment("2015-11-23T08:56:38.646Z","America/New_York").format()

结果:"2014-01-01T00:20:00+01:00"

同样:

moment("2015-11-23T08:56:38.646Z","Europe/Zagreb").format()

结果:"2015-01-17T01:00:00+01:00"

如果有人能帮助我了解这里发生了什么,我将不胜感激。

【问题讨论】:

  • 我是个白痴——这当然行不通。正确的调用应该是moment.tz(),而不仅仅是moment()

标签: javascript date datetime timezone momentjs


【解决方案1】:

解决方案是微不足道的,是由于我的一个粗心错误造成的。我把它留在这里是为了任何可能做同样事情的稀缺人的利益。

使用时区转换的正确方法是调用moment.tz() 而不仅仅是moment。因此,例如:

moment("2015-11-23T08:56:38.646Z","America/New_York").format()

应该是

moment.tz("2015-11-23T08:56:38.646Z","America/New_York").format()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    相关资源
    最近更新 更多