2015-10-19 98 views
0

我的目標是將表示Unix紀元時間(或自1970年1月1日午夜以來的毫秒數)轉換爲UTC(本地時間)的本地時間或GMT)時區。嘗試將Unix紀元時間轉換爲UTC本地日期/時間字符串

所以我有這樣的方法:

function formatDateTimeFromTicks(nTicks) 
{ 
    //'nTicks' = number of milliseconds since midnight of January 1, 1970 
    //RETURN: 
    //  = Formatted date/time 
    return new Date(nTicks).toLocaleString(); 
} 

由於我使用的1442004135000值作爲一個例子,應該給我‎9‎/‎11‎/‎2015‎ 8‎:‎42‎:‎15‎ ‎PM爲我的語言環境(here的,你可以檢查),但我的方法:

alert(formatDateTimeFromTicks(1442004135000)); 

給我‎‎9‎/‎11‎/‎2015‎ ‎1‎:‎42‎:‎15‎ ‎PM

任何想法爲什麼以及如何解決它?

+0

什麼是你的區域設置?我得到8:42 pm,我的時區設置爲CEST。準確地說,我得到「11 septembre 2015 22:42:15 UTC + 2」 – Touffy

+0

@Touffy:在這種情況下的時區應該不重要,因爲我需要它顯示UTC(或格林威治)時區的時間。區域設置應該僅用於格式化日期/時間本身。換句話說,它不應該轉換任何東西。 – c00000fd

+0

對不起,你想要UTC。希望我的回答有幫助。 – Touffy

回答

0

本地日期對象將不夠用,因爲即使在最好的情況下它也不會爲您提供UTC 區域設置字符串。我強烈建議你使用優秀的moment庫在所有平臺上都有可靠的行爲。

用法語顯示很好的本地化UTC:

moment(1442004135000).utc().locale('fr').format('LLLL') 

=> 「vendredi 11 septembre 2015年20:42」

+1

謝謝,但這是一個關於「純粹」JavaScript的問題。我不想將整個圖書館「拖」到我的頁面上以顯示一個日期。這正是互聯網如此臃腫的原因! – c00000fd

+0

我不習慣於將圖書館拖入我的答案中(特別是我有點討厭看到jQuery無處不在),但在這種情況下,本地對象只是很糟糕,而且時間非常好。如果您想使用本機日期達到相同的結果,則必須猜測本地化輸出的哪一部分是小時,然後更改該部分以更正時區。 – Touffy

相關問題