2009-09-11 61 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出了什么问题。 (一般来说,如果您遇到“遇到问题”并希望修复这些问题,则可以帮助描述问题所在,理想情况下用简短但完整的程序来演示问题。)