好吧,我正试图从rss中捕获日期,我在logcat中得到了这个execption:
E/AndroidNews( 870): Caused by: java.text.ParseException: Unparseable date: "Su
n, 02 Oct 2011 14:00:00 +0100"
E/AndroidNews( 870): at java.text.DateFormat.parse(DateFormat.java:626)
E/AndroidNews( 870): at com.warriorpoint.androidxmlsimple.Message.setDate(Mes
sage.java:57)
我的格式化程序是
static SimpleDateFormat FORMATTER = 新的SimpleDateFormat(“yyyy-MM-dd HH:mm”);'
我的方法setDate();
public void setDate(String date) {
this.date=null;
// pad the date if necessary
while (!date.endsWith("00")){
date += "0";
}
try {
this.date = FORMATTER.parse(date.trim());
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
答案 0 :(得分:9)
你使用了错误的格式,因为“Sun,02 Oct 2011 14:00:00 +0100”试试这个:
new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.US)
这也会强制语言环境为(美国)英语,因此日期和月份名称不受设备区域设置的影响,例如:在葡萄牙的场地中期待“太阳”和“十月”为“出局”的“Dom”(我偷看了你的个人资料)。
您问题中的格式只能解析“2011-10-02 14:00”等日期。
另外,请不要填充日期,让格式化程序进行解析。
如果您想以某种方式输出/显示java.util.Date
,只需使用所需的格式字符串创建一个新的SimpleDateFormat
(让我们称之为displayFmt
)并调用{{1在它上面:
format()
今天会为您提供类似“02 10 2011 17”的内容,格式为用户/设备的首选区域设置。
请注意,在您的评论中,您说String formattedDate = new SimpleDateFormat("dd MM yyyy H").format(date);
(小写dd mm yyyy h
和m
)会给您“dayOfMonth 分钟年份12” - - 我认为这不是你想要的,所以我将它改为大写h
和大写M
给你“dayOfMonth month year hours24 ”。