如何将特定时间的时区设置为特定时区,并使用momentjs忽略浏览器的时区?

时间:2016-11-20 17:35:07

标签: timezone momentjs

我有时间和时刻。

例如,我将此字符串作为我的时间:

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。

如果我的问题仍然不清楚,请告诉我,以便我提供更多信息。

1 个答案:

答案 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;
&#13;
&#13;

2 console.log()打印:

myTime 2016-11-20T20:15:00+03:00
utcTime 2016-11-20T17:15:00Z

utcTime之前3小时myTime