Java 在android中解析日期

Java 在android中解析日期,java,android,Java,Android,我有以下代码来传递日期 DateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy kk:mm:ss", Locale.getDefault()); Date _pubDate = df.parse(_pubDateE.getFirstChild().getNodeValue()); 但我得到了这个错误: java.text.ParseException:无法解析的日期:“2011年8月12日星期五15:34:47 CEST” 怎么了?日期字

我有以下代码来传递日期

DateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy kk:mm:ss", Locale.getDefault());
Date _pubDate =  df.parse(_pubDateE.getFirstChild().getNodeValue());
但我得到了这个错误:

java.text.ParseException:无法解析的日期:“2011年8月12日星期五15:34:47 CEST”


怎么了?

日期字符串的格式与您指定的格式不同。注意末尾的时区吗?

我认为您需要在末尾添加
zzz
(对于时区):


您可能需要:
newsimpledateformat(“EEE,dd-MMM-yyyy-kk:mm:ss-zzz”,Locale.getDefault())

您在异常消息的末尾缺少日期格式的时区,即“CEST”部分。 你的代码

DateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy kk:mm:ss", Locale.getDefault());
应该是

DateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy kk:mm:ss z", Locale.getDefault());
你可能想读书

编辑 在本页的底部,时区格式的解释更加清晰

在junit测试中使用您的错误日期运行了我的代码,它很好地解析了您的日期,还尝试了zzz,并且成功了。我的区域设置是EST,请注意您使用的构造函数可能不支持您的区域设置。根据javadoc:注意:此构造函数可能不支持所有区域设置。要实现完全覆盖,请使用DateFormat类.Hmm中的工厂方法。。奇怪。。。在Eclipse中,它工作得很好。但是如果我在我的Galaxy 2上尝试,我会得到错误
DateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy kk:mm:ss z", Locale.getDefault());