无法解释的日期异常

时间:2011-10-02 13:13:23

标签: android exception date

好吧,我正试图从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);
    }
}

1 个答案:

答案 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 hm)会给您“dayOfMonth 分钟年份12” - - 我认为这不是你想要的,所以我将它改为大写h和大写M给你“dayOfMonth month year hours24 ”。