1

我想转换此数据:“Thu, 06 Sep 2012 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"
4

1 回答 1

5

对我有用 - 但是,我在“Thu”是有效的日期缩写,“Sep”是有效的月份缩写的语言环境。也许你不是?假设您知道您获得美国英语日/月名称,您应该指定它。试试这个:

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

请注意,您绝对不应该这样Date.setHours打电话Date.getHours。这些方法都已被弃用超过 15 年。

相反,您应该将一SimpleDateFormat组格式化为适当的时区......或者最好首先使用Joda Time,这是一个更令人愉快的日期/时间 API。

于 2012-09-06T14:36:21.263 回答