我已经解析了一个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();
}
这就是它的回报:
如何正确设置日期格式?
答案 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);