2013-09-25 51 views
2

例如,我有一個字符串日期這樣的(我從JSON服務器獲取這一點,從Rails應用程序)JSON日期,顯示在服務器的時區原來的日期

s = "2013-09-01T00:00:00.000+08:00" 

我想顯示它像這樣

01.09.2013 

所以我使用moment.js庫這個

moment(s).zone("+08:00").format("DD.MM.YYYY") 
>> "01.09.2013" 

但如果需要的話,我不知道時區是+08:00。如果我跳過.zone()電話,因爲我的瀏覽器是在不同的充時區

moment(s).format("DD.MM.YYYY") 
>"31.08.2013" 

即使在我原來的字符串我在結束了+08:00結果將是錯誤的。

所以,我的問題是如何從json日期字符串中使用純JavaScript或者moment.js庫來提取時區?

我能想到的是人工提取的最後6個字符的最簡單方法,

s.slice(s.length - 6, s.length) 
> "+08:00" 

但也許有這個任務更好的方法?

+1

你控制導軌代碼?在Ruby中有一個'#utc'方法(在Ruby on Rails的DateTime中),它將時間轉換爲utc。這將是避免時區頭痛的好方法。另外請注意,rails時區格式不是必需的數字,但也可以是「CEST」之類的東西。 –

回答

4

只需使用parseZone功能,像這樣:

moment.parseZone(s) 

Documentation is here.

或者,你可以使用舊的方法,它做同樣的事情:

moment(s).zone(s) 
+1

請注意,爲了使其發揮作用,您需要傳遞一個像您在問題中顯示的時區*偏移*。如果您傳遞的是問題評論中提到的Olivier這樣的名稱或縮寫,則不起作用。 –

相關問題