无法解析的日期异常

发布于 2024-12-08 03:03:02 字数 850 浏览 0 评论 0原文

好吧,我正在尝试从 rss 中捕获日期,并且我在 logcat 中收到此执行:

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)

我的 formatter

静态 SimpleDateFormat 格式 = new 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);
    }
}

Well, i'm trying to catch date from rss, and i get this execption in logcat:

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)

My formatter is

static SimpleDateFormat FORMATTER =
new SimpleDateFormat("yyyy-MM-dd HH:mm");´

My method 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);
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

治碍 2024-12-15 03:03:03

您使用了错误的格式,对于“Sun, 02 Oct 2011 14:00:00 +0100”,请尝试以下操作:

new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.US)

这也会强制区域设置为(美国)英语,因此日期和月份名称不会受到设备的区域设置,例如,在葡萄牙语区域​​设置中,期望“Dom”代表“Sun”,“Oct”代表“Out”(我看了你的个人资料)。

您问题中的格式只能解析“2011-10-02 14:00”等日期。

另外,不要填充日期,让格式化程序进行解析。


如果您想以某种方式输出/显示java.util.Date,只需创建一个新的SimpleDateFormat(我们称之为displayFmt)使用所需的格式化字符串并对其调用 format()

String formattedDate = new SimpleDateFormat("dd MM yyyy H").format(date);

这将为您提供今天的“02 10 2011 17”之类的内容,并以用户/设备的首选区域设置进行格式化。

请注意,在您的评论中,您说dd mm yyyy h(小写mh),这将为您提供“dayOfMonth 分钟 年小时12” - 我认为这不是你想要的,所以我将其更改为大写 M 和大写 H 为你提供“dayOfMonth 小时24”。

You're using the wrong format, for "Sun, 02 Oct 2011 14:00:00 +0100" try this instead:

new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.US)

This also forces the locale to (American) English, so the day and month names aren't affected by the device's locale, e.g. expecting "Dom" for "Sun" and "Oct" for "Out" in a Portuguese locale (I peeked at your profile).

The format you have in your question would only be able to parse dates like "2011-10-02 14:00".

Also, don't pad the date, let your formatter do the parsing.


If you want to output/display a java.util.Date in a certain way, just create a new SimpleDateFormat (let's call it displayFmt) with the desired formatting string and call format() on it:

String formattedDate = new SimpleDateFormat("dd MM yyyy H").format(date);

This will give you something like "02 10 2011 17" for today, formatted in the user's/device's preferred locale.

Please note that in your comment, you said dd mm yyyy h (lower case m and h) which would give you "dayOfMonth minutes year hours12" -- I think that's not what you want, so I changed it to an upper case M and upper case H to give you "dayOfMonth month year hours24".

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文