【发布时间】:2016-11-20 17:35:07
【问题描述】:
我有 momentjs 和 moment-timezone。
例如我有这个字符串作为我的时间:
var myTime = "11/20/2016 8:15 PM";
现在我想告诉 momentjs,“myTime”在“欧洲/莫斯科”时区,即 UTC+3(忽略我的浏览器时区,即 UTC+3:30)。
那我想把时间改成UTC。
所以我希望“myTime”是20-11-2016 20:15:00+3:00
当我将其更改为 utc() 时,我希望它给我20-11-2016 17:15:00
我做的是这样的:
首先我设置了默认时区:moment.tz.setDefault('Europe/Moscow');
然后我这样做了:
moment("11/20/2016 8:15 PM").utc().format()
momentjs 对这段代码所做的是:2016-11-20T16:45:00+00:00
为什么?因为它首先检查了我浏览器的时区,即 UTC+3:30。将“myTime”更改为欧洲/莫斯科时区,因此 moment("11/20/2016 8:15 PM").format() 将返回 "2016-11-20T19:45:00+03:00"(从 myTime 中减去 30 分钟),然后将其更改为 UTC,结果为 2016-11-20T16:45:00+00:00
所以我的问题是:
如何为11/20/2016 8:15 PM 设置时区,忽略浏览器的时区,然后将其更改为 UTC。
如果我的问题仍然不清楚,请告诉我,以便我提供更多信息。
【问题讨论】:
-
在使用非 ISO 8601 格式的字符串时,您必须使用 moment parsing specifying format。所以使用
moment("11/20/2016 8:15 PM", 'MM/DD/YYYY h:mm A')而不是moment("11/20/2016 8:15 PM")。也许添加一个显示您的问题的 sn-p 或小提琴可以进一步澄清您的问题。