2016-11-20 14 views
0

我有momentjs和moment-timezone。如何將特定時間的時區設置爲特定時區,並使用momentjs忽略瀏覽器的時區?

例如,我有這個字符串作爲我的時間:

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() 

這段代碼做了些什麼: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"(減去30分鐘的數值指明MyTime),然後把它改爲UTC導致2016-11-20T16:45:00+00:00

所以我的問題是這樣的:

如何設置一個11/20/2016 8:15 PM的時區忽略瀏覽器的時區,然後將其更改爲UTC。

如果我的問題還不清楚,請讓我知道,所以我給更多的信息。

+1

當使用非ISO 8601格式的字符串時,您必須使用[時刻分析指定格式](http://momentjs.com/docs/#/parsing/string-format/)。因此,請使用'moment(「2016/11/20 8:15 PM」,'MM/DD/YYYY h:mm A')'而不是'moment(「2016/11/20 8:15 PM」)''。也許添加一個片段或小提琴顯示你的問題可以進一步澄清你的問題。 – VincenzoC

回答

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>

的2 console.log()打印:

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

隨着utcTime有3小時在myTime之前。

相關問題