Разбрах RSS емисия и търсякак да форматирате датата правилно. Опитвам се да го накарам да каже нещо подобно, сряда, 4 декември, 2012. Аз го изпълнявам през линия за генериране на моите данни. Ето кода, който използвам:
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();
}
Това е, което се връща:
Как да форматирам датата си правилно?
Отговори:
4 за отговор № 1В момента просто извличате данните от 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 за отговор № 2
Надявам се, че сте чули за това SimpleDateFormat за да форматирате датата, сега получавате дата от емисия като E, dd MMM гггг HH: mm: ss Z Така че трябва да го форматирате като ЕЕО, ММММ г, гггг, за да направите това, опитайте следното ..
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 тук
0 за отговор № 3
вижте a Разбор на RSS pubDate на дата обект в 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]);
...
0 за отговор № 4
Ако търсите печат / разбор на пълното име на деня на седмицата и името на месеца, моделът е както следва: -
Format formatter = new SimpleDateFormat("EEEE,MMMM,dd");
String s = formatter.format(new Date());
System.out.println(s);