java - Android 从 RSS xml feed 解析 pubDate 标签

标签 java android parsing rss feed

我在解析 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/

相关文章:

java - Google 的 oauth 端点返回 'Bad Request' ...但为什么呢?

java - 使用datastax Cassandra客户端进行并发建表

Java:双字符的用途?

java - 绕过对话框或无提示打印

android - 初始化 SharedPreferences 给出 : Attempt to invoke virtual method on a null object reference

java - Univocity - 如何定义 "format auto-detection"上分隔符的优先顺序?

java - 具有以下架构的类的 .yaml 结构应该是什么

javascript - 使用索引拆分来解析文本流日志

java - 即使目标文件已经存在,如何在Java中以原子方式重命名文件?

android - 我如何在全屏中滑动选定的网格图像