我在解析 RSS Feed 中的标签时遇到问题。
格式如下:Mon, 16 Apr 2012 16:42:30 +0000
我创建了一个函数 parseDate 来解决这个问题,但事实是它使用 Locale.US 解析日期,它返回日期但使用美国区域设置,因此它返回时间 +2小时。如果我不提供 Locale.US 参数,则会收到 ParseException。
如何完成正确的解析,以便提供的日期对于任何本地都是正确的?
这是函数:
public String parseDate (String dateraw){
String returndate;
try {String format = "EEE, dd MMM yyyy kk:mm:ss Z";
SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy kk:mm:ss z",Locale.US);
Date formatedDate = sdf.parse(dateraw);
Calendar c= Calendar.getInstance();
c.setTime(formatedDate);
returndate=""+c.get(Calendar.DAY_OF_MONTH)+"/"+c.get(Calendar.MONTH)+"/"+c.get(Calendar.YEAR)+" "+c.get(Calendar.HOUR_OF_DAY)+":"+c.get(Calendar.MINUTE);
return returndate;
} catch (ParseException e) {
e.printStackTrace();
// TODO Auto-generated catch block
return "NO DATE AVAILABLE";
}
}
最佳答案
你的代码工作正常。日期已被解析并且不依赖于时区。 尝试打印您当前的时区或日历时区,看看是否正确:
//...
Calendar c = Calendar.getInstance();
c.setTime(formatedDate);
Log.i(TAG, c.getTimeZone().getID());
Log.i(TAG, TimeZone.getDefault().getID());
//...
关于java - Android 从 RSS xml feed 解析 pubDate 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10180265/