Java Android解析RSS xml提要中的pubDate标记
我在解析RSS源中的标记时遇到问题 格式如下:2012年4月16日星期一16:42:30+0000 我创建了一个函数parseDate,该函数实现了这一功能,但事实是它使用Locale.US解析日期,该函数返回日期,但使用US Locale,因此它返回时间+2小时。如果我不提供Locale.US参数,我会得到一个ParseException 我如何才能完成正确的解析,以便提供的日期对于任何本地数据都是正确的 下面是函数:Java Android解析RSS xml提要中的pubDate标记,java,android,parsing,rss,feed,Java,Android,Parsing,Rss,Feed,我在解析RSS源中的标记时遇到问题 格式如下:2012年4月16日星期一16:42:30+0000 我创建了一个函数parseDate,该函数实现了这一功能,但事实是它使用Locale.US解析日期,该函数返回日期,但使用US Locale,因此它返回时间+2小时。如果我不提供Locale.US参数,我会得到一个ParseException 我如何才能完成正确的解析,以便提供的日期对于任何本地数据都是正确的 下面是函数: public String parseDate (String dater
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());
//...