我想转换这些数据:“星期四,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"
答案 0 :(得分:5)
适合我 - 但是,我在一个“Thu”是有效日缩写的地方,而“Sep”是有效的月份缩写。也许你不是吗?假设您知道将获取美国英语日/月名称,您应该指定。试试这个:
new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z", Locale.US);
请注意,绝对不应该像这样调用Date.setHours
和Date.getHours
。这些方法已被弃用超过15年。
相反,您应该将SimpleDateFormat
设置为适当的时区进行格式化...或者首选,您应该首先使用Joda Time,这是一个更愉快的日期/时间API。