/ / Форматиране на дата в определен формат - java, android, parsing, date, formating

Форматирайте датата в определен формат - java, android, синтактичен анализ, дата, форматиране

Разбрах 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();

}

Това е, което се връща:

Дата на издаване на Android

Как да форматирам датата си правилно?

Отговори:

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