时刻时区:变化(和错误)结果

时间:2015-12-31 02:54:56

标签: javascript date datetime timezone momentjs

我正在使用moment.js加上Moment 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"

如果有人能帮我理解这里发生的事情,我将非常感激。

1 个答案:

答案 0 :(得分:2)

解决方案是微不足道的,原因是我犯了一个不小心的错误。我将它留在这里是为了任何可能做同样事情的稀缺人士的利益。

使用时区转换的正确方法是致电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()