2017-01-17 64 views
0

我相信這個指令應該從UTC正確地轉換爲CST但好像從UTC轉換爲中部時間(「美國/芝加哥」)是一個小時關閉使用moment.js

moment.utc('07-18-2013 16:10:11', 'MM-DD-YYYY HH:mm').tz('America/Chicago').format("YYYY-MM-DD HH:mm"); 

它returs 2013-07-18 11:10當應該返回2013-07-18 10:10

我錯過了什麼嗎?

編輯:如果我打印縮寫的時區,我得到CDT而不是CST。我如何指定CST?

+0

你導入'與DATAS矩timezone'? – VincenzoC

+0

可能不是,我是新來的時刻,你能把我引向正確的方向嗎? – ilovelamp

+0

你可以在[docs](http://momentjs.com/timezone/docs/#/use-it/browser/)中閱讀如何使用時刻,基本上你需要導入['moment-timezone-在'瞬間'之後使用-data.js'](https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.11/moment-timezone-with-data-2010-2020.min.js)。 js'。 – VincenzoC

回答

2

你的代碼是正確的,正如VincenzoC在評論中指出的那樣,當時DST是有效的,這就是爲什麼你得到了你所做的結果。

您正在使用America/Chicago,意思是字面意思 - 芝加哥時間。它代表了整個美國中部時區。美國沒有使用中央時間而沒有夏令時的地方,因此要求這樣做是無意義的或無效的。

如果你真的沒有意味着美國中部時間,你的其他選擇是:

  • 選擇正確的時區。

    .tz('America/Regina')  // Saskatchewan, Canada  (UTC-6 all year) 
    .tz('America/Tegucigalpa') // Honduras, South America (UTC-6 all year) 
    
  • 使用固定的偏移量而不是時區。 (您不需要的時刻,時區添加的用於此。)

    .utcOffset('-06:00') 
    
+0

完美!現在我明白了。謝謝 :) – ilovelamp