当前位置:  开发笔记 > 编程语言 > 正文

使用我创建的时区偏移量初始化一个Moment

如何解决《使用我创建的时区偏移量初始化一个Moment》经验,为你挑选了1个好方法。

我在javascript中使用时刻和时刻 - 这个部分是我见过的最不直观的API之一.

我希望如此:

moment("2015-12-14T04:00:00Z").utcOffset()

将是一个纯函数并返回参数中包含的偏移量,即0.但是它隐式将其转换为我的本地时区偏移量(PST),所以这将返回-480为什么?我问我刚刚创建的对象偏移了什么,而不是我目前所处的偏移量.就像我写了一个api,其中调用User.find(123).name()返回你的名字而不是用户的名字123.

无论如何,我能做到

moment("2015-12-14T04:00:00Z").tz("utc").utcOffset()

但我的日期时间字符串是动态的,所以我不知道时区.

我怎样才能得到我所期望的行为,在传入的字符串中包含的时区偏移量中的js中的时刻?



1> Matt Johnson..:

使用parseZone保持,因为它是在通过了偏移.

moment.parseZone("2015-12-14T04:00:00Z")

至于"为什么?" 你问题的一部分:

moment(...)是本地模式.模糊输入(无偏移)假定为本地时间.明确的输入(带偏移)调整为当地时间.

moment.utc(...)是utc模式.模糊输入假定为UTC.明确的输入调整为UTC.

moment.parseZone() 保持输入区域的传入.如果输入不明确,则与本地模式相同.

moment.tz(...) 使用moment-timezone插件可以解析特定时区的输入.

请记住,时刻必须与各种各样的投入相抗衡.

还要记住,时区和时区偏移是两个不同的事情.抵消-08:00并不一定意味着您处于美国太平洋时区.


是的,可能有一些我没有考虑的东西或历史包or之类的东西。将基本形式的moment()设为本地模式似乎是一个奇怪的选择,对于默认行为,parseZone()行为似乎更加自然。感谢您的解释
仅供参考,这个话题实际上是我第一次参与moment.js的方式.有关历史记录,请参阅[#611](https://github.com/moment/moment/issues/611)和[#887](https://github.com/moment/moment/issues/887).
推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有