Javascript 用我创建的时区偏移量初始化一个时刻

Javascript 用我创建的时区偏移量初始化一个时刻,javascript,momentjs,Javascript,Momentjs,我在javascript中使用了时刻和时刻时区,这部分是我见过的最不直观的API之一 我希望: moment("2015-12-14T04:00:00Z").utcOffset() 将是纯函数,并返回参数中包含的偏移量,即0。但它却隐式地将其转换为我的本地时区偏移量(PST),因此返回-480为什么??我问的是我刚刚创建的对象的偏移量,而不是我当前的偏移量。这就像我编写了一个api,其中调用User.find(123).name()返回您的名字,而不是User 123的名字 无论如何,我能做到

我在javascript中使用了时刻和时刻时区,这部分是我见过的最不直观的API之一

我希望:

moment("2015-12-14T04:00:00Z").utcOffset()
将是纯函数,并返回参数中包含的偏移量,即0。但它却隐式地将其转换为我的本地时区偏移量(PST),因此返回-480为什么??我问的是我刚刚创建的对象的偏移量,而不是我当前的偏移量。这就像我编写了一个api,其中调用User.find(123).name()返回您的名字,而不是User 123的名字

无论如何,我能做到

moment("2015-12-14T04:00:00Z").tz("utc").utcOffset()
但是我的datetime字符串是动态的,所以我不知道时区


如何获得我期望的行为,js中的某个时刻,它位于我传入的字符串中包含的时区偏移量中?

使用
parseZone
将偏移量保持在传入时

moment.parseZone("2015-12-14T04:00:00Z")
至于你问题的“为什么”部分:

  • 力矩(…)
    为本地模式。不明确的输入(无偏移)假定为本地时间。无歧义输入(带偏移)调整为本地时间
  • 时刻。utc(…)
    是utc模式。不明确的输入假定为UTC。明确的输入调整为UTC
  • moment.parseZone()
    保留传入的输入区域。如果输入不明确,则与本地模式相同
  • 矩.tz(…)
    使用矩时区插件可以解析特定时区中的输入
请记住,时刻必须应对各种各样的输入


还要记住,时区和时区偏移是两件不同的事情。偏移量
-08:00
不一定意味着你在美国太平洋时区。

是的,可能有什么我没有考虑的,或者是历史行李之类的。将基本表单矩()设为本地模式似乎是一个奇怪的选择,对于默认行为,parseZone()行为似乎更自然。感谢您的解释,这个主题实际上是我第一次接触矩.js的方式。有关历史,请参见和。