Переформатирование объекта Date (Java)

В настоящее время я работаю над базовой программой RSS-канала, которая отображает твиты с учетом источника Twitter, который можно анализировать. Сейчас я работаю над переформатированием даты. Когда я получаю pubDate, он анализируется в форме «EEE, d MMM yyyy HH:mm:ss Z». Что я хочу сделать, так это переформатировать его так, чтобы при отображении в графическом интерфейсе он отображался как «ММ/дд/гггг ЧЧ: мм». Как мне это сделать? Вот необходимый кусок кода:

try {
    builder = factory.newDocumentBuilder();
    Document feedDocument = builder.parse(sourceListItem);
    XPathFactory xpfactory = XPathFactory.newInstance();
    XPath xpath = xpfactory.newXPath();
    String countStr = xpath.evaluate("count(/rss/channel/item)", feedDocument);
    int itemCount = Integer.parseInt(countStr);
    for(j=1; j<=itemCount; j++) {
        try {
            String title = xpath.evaluate("/rss/channel/item[" + j + "]/title", feedDocument);
            String link = xpath.evaluate("/rss/channel/item[" + j + "]/link", feedDocument);
            String date = xpath.evaluate("/rss/channel/item[" + j + "]/pubDate", feedDocument);
            DateFormat df = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
            Calendar c = Calendar.getInstance();
            Date d = df.parse(date);
            DateFormat df2 = new SimpleDateFormat("MM/dd/yyyy HH:mm");
            String dateFormat = df2.format(d);
            c.setTime(d);
            RSSItemClass rssItem = new RSSItemClass(title, link, c);
            rssList.add(rssItem);
        } catch (ParseException e) {
            badSourceList.add(sourceListItem);
        }
    }
} catch (ParserConfigurationException e) {
    badSourceList.add(sourceListItem);
}

person Mike    schedule 31.05.2012    source источник
comment
Где вопрос/проблема? Похоже, у вас уже есть решение, хотя вы не используете отформатированную строку даты dateFormat.   -  person Thomas    schedule 31.05.2012
comment
Мой Date d анализирует форму EEE, d MMM yyyy HH:mm:ss Z, но когда я отображаю дату в своем графическом интерфейсе, я не хочу, чтобы она выводилась в этом формате, я хочу, чтобы она выводилась в формате MM/dd /гггг ЧЧ:мм. Извините за путаницу.   -  person Mike    schedule 31.05.2012


Ответы (2)


Поскольку вы, кажется, «отображаете» значение объекта Calendar в своем графическом интерфейсе, вам не нужно форматировать дату в опубликованном вами методе, а только тогда, когда дата преобразуется в строку в графическом интерфейсе.

То, как это делается, зависит от используемой вами структуры графического интерфейса, но, скорее всего, вам где-то понадобится этот код:

DateFormat df2 = new SimpleDateFormat("MM/dd/yyyy HH:mm");
String formattedDate = df2.format(calendar.getTime());

Где calendar – это c, которое вы передаете new RSSItemClass(title, link, c);.

person Thomas    schedule 31.05.2012

В вашем коде есть строка String dateFormat = df2.format(d);, но вы нигде не используете переменную dateFormat.

person Michał Kosmulski    schedule 31.05.2012
comment
Когда я пытаюсь разобрать строку dateFormat, я не получаю желаемого формата MM/dd/yyyy HH:mm. - person Mike; 31.05.2012
comment
@michal-kosmulski Параметры правильные. SimpleDateFormat — это DateFormat, у которого есть метод format(Date). - person dogbane; 31.05.2012
comment
Кроме того, этот метод format(), который принимает три параметра, предназначен для SimpleDateFormat, и я использую DateFormat. - person Mike; 31.05.2012
comment
@Mike, зачем тебе снова анализировать dateFormat? Это должна быть уже отформатированная строка, которую вы хотите. - person Thomas; 31.05.2012
comment
@Thomas, мне нужно поместить эту строку в мой Calendar c, который на данный момент установлен на Date d - person Mike; 31.05.2012
comment
Календарь работает с датами, DateFormat анализирует и форматирует даты по предоставленному формату. Какой у вас графический интерфейс? Какое свойство отображает графический интерфейс? - person JMelnik; 31.05.2012
comment
Графический интерфейс отображает тип Календарь - person Mike; 31.05.2012
comment
@Mike, хорошо, тогда добавьте некоторое преобразование из календаря в строку в код отображения вашего графического интерфейса. - person Thomas; 31.05.2012
comment
Мои инструкции заключаются в том, что после анализа даты я должен изменить формат и сохранить его в RSSItem, чтобы при отображении RSSItem в моем графическом интерфейсе он отображал правильно отформатированную дату. - person Mike; 31.05.2012
comment
@Mike обратите внимание, что если вы храните календарь, а не форматированную строку внутри RSSItem, у вас возникнут проблемы, поскольку календари и даты представляют собой просто неформатированную информацию о времени (вообще нет понятия форматированного времени, это просто преобразование из метки времени в строка, в которой необходимо форматирование). - person Thomas; 31.05.2012
comment
@Mike Майк Ты прав, я пропустил метод format(Date) в документах. - person Michał Kosmulski; 31.05.2012