Moment Timezone:不同(和错误)的结果
Moment Timezone: varying (and wrong) results
我正在使用 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"
如果有人能帮助我理解这里发生的事情,我将不胜感激。
解决方案很简单,是由于我的粗心错误造成的。我把它留在这里是为了任何可能做同样事情的人的利益。
使用时区转换的正确方法是调用 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()
我正在使用 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"
如果有人能帮助我理解这里发生的事情,我将不胜感激。
解决方案很简单,是由于我的粗心错误造成的。我把它留在这里是为了任何可能做同样事情的人的利益。
使用时区转换的正确方法是调用 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()