使用我创建的时区偏移量初始化 Moment
Initialize a Moment with the timezone offset that I created it with
我在 javascript 中使用时刻和时刻时区,这部分是我见过的最不直观的 API 之一。
我希望:
moment("2015-12-14T04:00:00Z").utcOffset()
将是一个纯函数,return 参数中包含的偏移量为 0。但是它隐式地将其转换为我的本地时区偏移量 (PST),所以这个 returns -480 为什么??我问的是我刚刚创建的对象有什么偏移量,而不是我当前所在的偏移量。这就像我写了一个 api 调用 User.find(123).name() return是你的名字,而不是用户 123 的名字。
反正我可以
moment("2015-12-14T04:00:00Z").tz("utc").utcOffset()
但是我的日期时间字符串是动态的,所以我不知道时区。
我怎样才能得到我预期的行为,js 中的一个时刻,它位于我传入的字符串中包含的时区偏移量中?
使用 parseZone
保持传入的偏移量。
moment.parseZone("2015-12-14T04:00:00Z")
关于你问题的"why?"部分:
moment(...)
是本地模式。不明确的输入(没有偏移量)被假定为本地时间。明确的输入(带偏移量)调整为当地时间。
moment.utc(...)
是 utc 模式。模糊输入假定为 UTC。明确输入 调整 为 UTC。
moment.parseZone()
保留传入的输入区,如果输入有歧义,则与本地模式相同
moment.tz(...)
配合moment-timezone插件可以解析特定时区的输入
请记住,时刻必须应对各种各样的输入。
另外请记住,时区和时区偏移量是两个不同的东西。 -08:00
的偏移量并不一定意味着您处于美国太平洋时区。
我在 javascript 中使用时刻和时刻时区,这部分是我见过的最不直观的 API 之一。
我希望:
moment("2015-12-14T04:00:00Z").utcOffset()
将是一个纯函数,return 参数中包含的偏移量为 0。但是它隐式地将其转换为我的本地时区偏移量 (PST),所以这个 returns -480 为什么??我问的是我刚刚创建的对象有什么偏移量,而不是我当前所在的偏移量。这就像我写了一个 api 调用 User.find(123).name() return是你的名字,而不是用户 123 的名字。
反正我可以
moment("2015-12-14T04:00:00Z").tz("utc").utcOffset()
但是我的日期时间字符串是动态的,所以我不知道时区。
我怎样才能得到我预期的行为,js 中的一个时刻,它位于我传入的字符串中包含的时区偏移量中?
使用 parseZone
保持传入的偏移量。
moment.parseZone("2015-12-14T04:00:00Z")
关于你问题的"why?"部分:
moment(...)
是本地模式。不明确的输入(没有偏移量)被假定为本地时间。明确的输入(带偏移量)调整为当地时间。moment.utc(...)
是 utc 模式。模糊输入假定为 UTC。明确输入 调整 为 UTC。moment.parseZone()
保留传入的输入区,如果输入有歧义,则与本地模式相同moment.tz(...)
配合moment-timezone插件可以解析特定时区的输入
请记住,时刻必须应对各种各样的输入。
另外请记住,时区和时区偏移量是两个不同的东西。 -08:00
的偏移量并不一定意味着您处于美国太平洋时区。