2016-03-09 35 views
1

在json響應我得到的格式是這樣格林威治時間格式:2016-03-09T09:55:47.107111。每當我試圖轉換成當地的日期/使用下面的代碼時間格式: -新的日期()。toLocaleString不工作在Firefox上

new Date('2016-03-09T09:55:47.107111').toLocaleString() 

我得到的輸出是這樣的: -

"09/03/2016, 15:25:47" Which is correct 

Mozilla Firefox瀏覽器

"3/9/2016, 9:55:47 AM" Which is wrong 

new Date('2016-03-09T09:55:47.107111')。toLocaleString()在Firefox上不起作用。

+1

你不告訴'Date'哪個時區轉換_from_,這意味着它是一個毛茸茸的亂七八糟的JavaScript引擎做什麼關於它: -/ –

+0

@JoachimIsaksson嗨,但它的工作正常在鉻 –

+3

@Rushikeshjogle它不工作在Chrome「好」,沒有規範定義什麼日期應該會導致你使用的日期字符串,而Chrome只是按照你認爲正確的方式來解釋它t的行爲可能會在較舊或較新版本的Chrome中有所不同。您應該使用標準日期字符串或正確解析它。 – str

回答

2

按照MDN specification of Date, 「dateString」 可以是IETF-符合RFC 2822時間戳或ISO8601的版本。你的日期字符串既不是。我甚至不確定你的字符串末尾應該是什麼「107111」,那麼計算機應該如何計算出來呢?

通常,建議使用格式爲「YYYY-MM-DDTHH:mm:ss.sssZ」的日期字符串。

1

在js文件你寫

$scope.date=new Date('2016-03-09T09:55:47.107111'); 

在HTML文件中你寫

{{date | date :'dd/MM/yyyy h:mm:ss'}} 

它會工作的任何瀏覽器

+0

這是行不通的。當甚至沒有瀏覽器能夠解釋日期字符串時,Angular應該如何正確地格式化它? – str

+0

請查看下面的鏈接瞭解Mozilla本地化概念的更多詳情 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString –

0

您可以隨時通過將它傳遞給toLocaleString函數來指定本地化。 例如:

new Date('2016-03-09T09:55:47.107111').toLocaleString("en-GB"); 

會導致:

09/03/2016, 11:55:47 
在這兩個瀏覽器Firefox的&

注意:

new Date('2016-03-09T09:55:47.107111').toLocaleString("en-GB"); 

new Date('2016-03-09 09:55:47.107111').toLocaleString("en-GB"); 

會給你不同的時間輸出(第一將增加從UTC的區域差異,第二個將不

+0

這是錯誤的。最新版本的Firefox和Chrome(至少在我的時區,但我想知道爲什麼它應該有所作爲),也不是相同的,也不能轉換依賴於瀏覽器實現的日期對象在任何幫助第一名。當日期對象不一樣時,你可以隨心所欲地做任何事情,但它仍然不一樣。 – str

+0

被綁定到瀏覽器實現上的確是錯誤的,確實最好是使用自己的格式化程序來挑選單個部分,但在所有情況下,我都嘗試了IE僅將日期作爲 - 沒有時區計算 我可以說,moment.js是一個偉大的圖書館來處理它 –