在Java中解析JavaScript日期字符串
JavaScript客户端向我的服务器发送一些字符串,其中一个字符串是JavaScript日期对象的字符串表示形式
现在,这个JavaScript日期对象有它自己的格式,我只是想知道是否有一个类可以进行正确的转换,因为我遇到了SimpleDateFormatter
的问题
这是JavaScript日期字符串的外观:Tue Feb 12 2013 21:12:28 GMT+0100 (CET)
你可以在下面搜索框中键入要查询的问题!
JavaScript客户端向我的服务器发送一些字符串,其中一个字符串是JavaScript日期对象的字符串表示形式
现在,这个JavaScript日期对象有它自己的格式,我只是想知道是否有一个类可以进行正确的转换,因为我遇到了SimpleDateFormatter
的问题
这是JavaScript日期字符串的外观:Tue Feb 12 2013 21:12:28 GMT+0100 (CET)
# 1 楼答案
就我个人而言,我更喜欢Joda Time格式化程序的一个主要原因是:它们是线程安全且不可变的,因此您可以创建一个,静态地保存它,并毫无顾虑地重用它。Joda还允许简单地指定时区等。当然,它们最终会创建Joda对象,这在我看来是另一个优势——我尽量避开Java的日期/时间API
话虽如此,我们需要更多地了解您试图解析的格式,以及
SimpleDateFormatter
的问题所在。(一般来说,如果你在某件事情上“遇到问题”并希望解决这些问题,那么描述问题是什么会有帮助的,最好是用一个简短但完整的程序来演示问题。)# 2 楼答案
爪哇。时间
java.util
日期时间API及其格式化APISimpleDateFormat
已过时且容易出错。建议完全停止使用它们,并切换到modern Date-Time API*此外,以下引述的是home page of Joda-Time的通知:
使用
java.time
现代日期时间API的解决方案:输出:
ONLINE DEMO
出于任何原因,如果需要将此
ZonedDateTime
对象转换为java.util.Date
对象,可以按如下方式执行:从Trail: Date Time了解有关现代日期时间API的更多信息
*无论出于何种原因,如果您必须坚持使用Java 6或Java 7,您都可以使用ThreeTen-Backport作为大多数Java的后台端口。Java 6&;的时间功能;7.如果您正在为Android项目工作,并且您的Android API级别仍然不符合Java-8,请选中Java 8+ APIs available through desugaring和How to use ThreeTenABP in Android Project。
# 3 楼答案
在javascript中序列化日期的最佳方法是使用
toUTCString
(而不仅仅是toString()
)toUTCString
将生成rfc 822日期(与http使用的格式相同)。然后,您可以使用以下SimpleDataFormat模式在java中对其进行解析: