2009-09-11 62 views
8

JavaScript客戶端向我的服務器發送一些字符串,其中一個字符串以JavaScript Date對象的字符串表示形式出現。解析Java中的JavaScript日期字符串

現在,這個JavaScript Date對象有自己的格式,我只是想知道是否有一個類能夠正確轉換,因爲我遇到了SimpleDateFormatter的問題。

這是一個JavaScript日期字符串的樣子:Tue Feb 12 2013 21:12:28 GMT+0100 (CET)

+0

SimpleDateFormatter有什麼問題? – 2009-09-11 09:21:55

+0

試試moment.js,相信我你會擺脫所有這些煩人的問題。 – 2016-12-13 15:54:02

回答

11

最佳方式在javascript中序列化日期是使用toUTCString(而不僅僅是toString()); toUTCString將產生rfc 822日期(與http使用的格式相同)。然後,您可以使用以下SimpleDateFormat模式在java中解析它:

new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.ENGLISH) 
+2

如果你不控制日期的製作者,並且不使用'.toUTCString()',你可以使用這種格式:''EE MMM dy H:m:s'GMT'Z(zz )「' – 2015-11-30 09:53:13

3

個人而言,我更喜歡Joda Time格式化爲一個主要的原因:他們是線程安全的,不變的,所以你可以創建一個,保持靜態,並無需擔心重複使用它。 Joda還允許輕鬆指定時區等。當然,它們最終會創建Joda對象,這是IMO的另一個優勢 - 儘可能避免使用Java的日期/時間API。

話雖如此,我們需要更多地瞭解您想要解析的格式,以及SimpleDateFormatter出了什麼問題。 (一般來說,如果您遇到「遇到問題」並希望修復這些問題,則可以幫助描述問題所在,理想情況下用簡短但完整的程序來演示問題。)