2014-10-31 74 views
3

SQLLite给了我这种格式的日期。如何解析日期,如“2014年10月31日14:51:47جرينتش+03:00”

在英语中,我通过使用SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH)来解析它。

但是,当我将语言切换到阿拉伯语时,我得到的日期是Fri Oct 31 14:51:47 جرينتش+03:00 2014

我该如何解析阿拉伯日期?

+0

我认为你必须使用这种格式“EEE MMM DD HH:MM:SS YYYY”,而不是考虑时区,并试图将时区添加到SimpleDateFormat对象稍后。 – 2014-10-31 12:16:49

+0

您是否验证过您的SimpleDateFormat正在为您的阿拉伯语语言环境使用正确的DateFormatSymbols?请参阅此构造函数 - http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html#SimpleDateFormat(java.lang.String,%20java.text.DateFormatSymbols) – SpaceTrucker 2014-10-31 12:17:27

+0

感谢你的快速胜利我明天会尝试。 – 2014-10-31 13:50:42

回答

0

使用fomratter问题解决了:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); 
+0

SimpleDateFormat不是线程安全的,它是旧java.util.Date/.Calendar/SimpleDateFormat类的许多问题之一。您在此处定义的格式为标准[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)格式。我建议使用Joda-Time或内置于Java 8的java.time包。这两个库都使用ISO 8601作为其生成和解析字符串的默认值。 – 2014-11-02 16:32:10

相关问题