无法解析的日期异常
好吧,我正在尝试从 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您使用了错误的格式,对于“Sun, 02 Oct 2011 14:00:00 +0100”,请尝试以下操作:
这也会强制区域设置为(美国)英语,因此日期和月份名称不会受到设备的区域设置,例如,在葡萄牙语区域设置中,期望“Dom”代表“Sun”,“Oct”代表“Out”(我看了你的个人资料)。
您问题中的格式只能解析“2011-10-02 14:00”等日期。
另外,不要填充日期,让格式化程序进行解析。
如果您想以某种方式输出/显示
java.util.Date
,只需创建一个新的SimpleDateFormat
(我们称之为displayFmt
)使用所需的格式化字符串并对其调用format()
:这将为您提供今天的“02 10 2011 17”之类的内容,并以用户/设备的首选区域设置进行格式化。
请注意,在您的评论中,您说
dd mm yyyy h
(小写m
和h
),这将为您提供“dayOfMonth 分钟 年小时12” - 我认为这不是你想要的,所以我将其更改为大写M
和大写H
为你提供“dayOfMonth 月年小时24”。You're using the wrong format, for "Sun, 02 Oct 2011 14:00:00 +0100" try this instead:
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 newSimpleDateFormat
(let's call itdisplayFmt
) with the desired formatting string and callformat()
on it: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 casem
andh
) which would give you "dayOfMonth minutes year hours12" -- I think that's not what you want, so I changed it to an upper caseM
and upper caseH
to give you "dayOfMonth month year hours24".