Initialize a Moment with the timezone offset that I created it with
我在javascript中使用时刻和时刻 - 这个部分是我见过的最不直观的API之一。
我希望如此:
1 | moment("2015-12-14T04:00:00Z").utcOffset() |
将是一个纯函数并返回包含在参数中的偏移量,即0.但是它隐式地将其转换为我的本地时区偏移量(PST),所以这返回-480为什么? 我问我刚刚创建的对象偏移了什么,而不是我目前所处的偏移量。就像我写了一个api,其中调用User.find(123).name()返回你的名字而不是用户的名字123。
无论如何,我能做到
1 | moment("2015-12-14T04:00:00Z").tz("utc").utcOffset() |
但我的日期时间字符串是动态的,所以我不知道时区。
我怎样才能得到我所期望的行为,在传入的字符串中包含的时区偏移量中的js中的时刻?
使用
1 | moment.parseZone("2015-12-14T04:00:00Z") |
至于"为什么?" 你问题的一部分:
-
moment(...) 是本地模式。 模糊输入(无偏移)假定为本地时间。 明确的输入(带偏移)调整为当地时间。 -
moment.utc(...) 是utc模式。 模糊输入假定为UTC。 明确的输入调整为UTC。 -
moment.parseZone() 保持输入区域的传入。如果输入不明确,则与本地模式相同。 -
带有moment-timezone插件的
moment.tz(...) 可以解析特定时区的输入。
请记住,时刻必须与各种各样的投入相抗衡。
还要记住,时区和时区偏移是两个不同的事情。 偏移