无法解析的数据异常

时间:2012-09-06 14:33:07

标签: java

我想转换这些数据:“星期四,2012年9月6日16:15:00 +0200”,格式为yyyy-MM-dd HH:mm

这是我的代码:

private static final SimpleDateFormat rssFormat = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z");
public static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = rssFormat.parse(pubDate);
date.setHours(date.getHours()+2); //this is for gmt difference
this.pubDate = dateFormat.format(date);

似乎没问题...为什么会抛出此异常?

java.text.ParseException: Unparseable date: "Tue, 04 Sep 2012 16:45:00 +0200"

1 个答案:

答案 0 :(得分:5)

适合我 - 但是,我在一个“Thu”是有效日缩写的地方,而“Sep”是有效的月份缩写。也许你不是吗?假设您知道获取美国英语日/月名称,您应该指定。试试这个:

new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z", Locale.US);

请注意,绝对不应该像这样调用Date.setHoursDate.getHours。这些方法已被弃用超过15年。

相反,您应该将SimpleDateFormat设置为适当的时区进行格式化...或者首选,您应该首先使用Joda Time,这是一个更愉快的日期/时间API。