以特定格式格式化日期

时间:2012-12-04 06:39:57

标签: java android parsing date formatting

我已经解析了一个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 Date Issue

如何正确设置日期格式?

4 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

我希望您听说SimpleDateFormat格式化日期,现在您从Feed获取日期 E,dd MMM yyyy HH:mm:ss Z 所以必须将其格式化为< strong> 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 here

的信息

答案 2 :(得分:0)

查看Parse RSS pubDate to Date object in java

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]);

...

答案 3 :(得分:0)

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

Format formatter = new SimpleDateFormat("EEEE,MMMM,dd"); 
 String s = formatter.format(new Date());
 System.out.println(s);