Android从RSS xml feed解析pubDate标记

时间:2012-04-16 19:19:29

标签: java android parsing rss feed

我在从RSS Feed解析标记时遇到问题。

格式如下:Mon,2012年4月16日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";

        }
    }

1 个答案:

答案 0 :(得分:0)

您的代码运行正常。解析日期并且不依赖于时区。 尝试打印当前时区或日历时区,看看是否正确:

        //...            
        Calendar c = Calendar.getInstance();
        c.setTime(formatedDate);
        Log.i(TAG, c.getTimeZone().getID());
        Log.i(TAG, TimeZone.getDefault().getID());
        //...