我有时间和时刻。
例如,我将此字符串作为我的时间:
var myTime = "11/20/2016 8:15 PM";
现在我想告诉我们,“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()
这段代码对此代码的影响是: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。
如果我的问题仍然不清楚,请告诉我,以便我提供更多信息。
答案 0 :(得分:1)
尝试在创建时刻对象时指定时区,如下所示:
var myTime = moment.tz('11/20/2016 8:15 PM', 'MM/DD/YYYY h:mm A', 'Europe/Moscow');
var utcTime = myTime.clone().utc();
console.log('myTime', myTime.format());
console.log('utcTime', utcTime.format());

<script src="http://momentjs.com/downloads/moment.js"></script>
<script src="http://momentjs.com/downloads/moment-timezone-with-data.js"></script>
&#13;
2 console.log()
打印:
myTime 2016-11-20T20:15:00+03:00
utcTime 2016-11-20T17:15:00Z
在utcTime
之前3小时myTime
。