0

我已经解析了一个 RSS 提要,我正在寻找如何正确格式化日期。我试图让它说出类似 2012 年 12 月 4 日星期三的内容。我正在通过 for 循环运行它以生成我的数据。这是我正在使用的代码:

Feed = new URL(URLFeed);
DocumentBuilderFactory dbf= DocumentBuilderFactory.newInstance();
db = dbf.newDocumentBuilder();
doc = db.parse(new InputSource(Feed.openStream()));
doc.getDocumentElement().normalize();
nodeList = doc.getElementsByTagName("item");

title = new String[nodeList.getLength()];
pubDate = new String[nodeList.getLength()];
link = new String[nodeList.getLength()];

for(int i=0;i<nodeList.getLength();i++){
    Node node = nodeList.item(i);

    Element fstElmnt = (Element) node;

    NodeList titleList = fstElmnt.getElementsByTagName("title");
    Element titleElement = (Element) titleList.item(0);
    titleList = titleElement.getChildNodes();
    title[i] = ((Node) titleList.item(0)).getNodeValue();


    NodeList pubDateList = fstElmnt.getElementsByTagName("pubDate");
    Element pubDateElement = (Element) pubDateList.item(0);
    pubDateList = pubDateElement.getChildNodes();
    pubDate[i] = ((Node) pubDateList.item(0)).getNodeValue();


    NodeList linkList = fstElmnt.getElementsByTagName("link");
    Element linkElement = (Element) linkList.item(0);
    linkList = linkElement.getChildNodes();
    link[i] = ((Node) linkList.item(0)).getNodeValue();

}

这是它返回的内容:

Android 日期问题

如何正确格式化我的日期?

4

4 回答 4

4

目前,您只是从 XML 节点中获取数据作为字符串。您需要以输入格式解析该字符串,然后将其格式化为您想要的格式。这两者都可以使用SimpleDateFormat.

您需要确定要用于输出的时区 - 输入已经具有“与 UTC 的偏移量”,因此您无需担心这一点。

接下来,您需要确定如何处理国际化。大概你想在用户的语言环境中显示信息?如果是这样,您可能希望使用DateFormat.getDateInstance()而不是SimpleDateFormat. 不过不要忘记使用Locale.US输入格式,因为它依赖于用户。

因此,作为一个完整的示例,您可能想要:

SimpleDateFormat inputFormat = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z",
                                                    Locale.US);
DateFormat outputFormat = DateFormat.getDateInstance(DateFormat.LONG,
                                                     userLocale);
// TODO: Set time zone in outputFormat

Date date = inputFormat.parse(inputText);
String outputText = outputFormat.format(date);
于 2012-12-04T06:48:51.583 回答
1

我希望您听说过SimpleDateFormat来格式化日期,现在您从提要中获取日期为E, dd MMM yyyy HH:mm:ss Z所以必须将其格式化为EEE, MMMM d, yyyy。要做到这一点,请尝试以下..

SimpleDateFormat fromFormat = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z", Locale.US);
SimpleDateFormat toFormat = new SimpleDateFormat("EEE, MMMM d, yyyy", Locale.US);

try {
       Date fromDate = fromFormat.parse(pubDate[i]) //pubDate[i] is your date (node value)
       pubDate[i] = toFormat.format(fromDate);
    } catch (Exception e) {
                    e.printStackTrace();
                }

您可以在此处获取有关 DateFormat 的信息

于 2012-12-04T07:03:14.393 回答
0

在 java 中查看Parse RSS pubDate to Date 对象

pubDate[i] = ((Node) pubDateList.item(0)).getNodeValue();
DateFormat formatter = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z");
Date date = formatter.parse(pubDate[i]);

...
于 2012-12-04T06:50:16.587 回答
0

如果您正在寻找打印/解析工作日和月份名称的全名,则模式如下:-

Format formatter = new SimpleDateFormat("EEEE,MMMM,dd"); 
 String s = formatter.format(new Date());
 System.out.println(s);
于 2012-12-04T07:37:49.760 回答