de-vraag
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
Courtney Stephenson
Courtney Stephenson
Вопрос

Формат даты Android внутри ListView

Благодаря Джулио Пианкастелли Теперь у меня есть просмотр списка с несколькими возможностями линии. Теперь у меня проблема с форматированием даты на второй строке. Все даты одинаковы. В корме они разные. Мне нужен кто-то, кто поможет мне форматировать даты в формате «День», «Месяц», «Год» (четверг, 27 октября 2011 г.).

Это код, который не работает :

 List> data = new ArrayList>();
    for (RSSItem item : feed.getAllItems()) {
        Map datum = new HashMap(2);
        datum.put("title", item.getTitle());

        String dateStr = item.getPubDate();
        SimpleDateFormat curFormater = new SimpleDateFormat("EEEE, MMMM dd, yyyy"); 
        Date dateObj = new Date();
        try {
            dateObj = curFormater.parse(dateStr);
        } catch (ParseException e) {
           //TODO Auto-generated catch block
            e.printStackTrace();
        } 
        SimpleDateFormat postFormater = new SimpleDateFormat("EEEE, MMMM dd, yyyy"); 

        String newDateStr = postFormater.format(dateObj);

        datum.put("date", newDateStr);
        data.add(datum);
    }
    SimpleAdapter adapter = new SimpleAdapter(this, data,
                                              android.R.layout.simple_list_item_2,
                                              new String[] {"title", "date"},
                                              new int[] {android.R.id.text1,
                                                         android.R.id.text2});

    itemlist.setAdapter(adapter);

    itemlist.setOnItemClickListener(this);

    itemlist.setSelection(0);

Repeating date

Если я удалю свой предыдущий код даты, он отлично работает, но отформатирован неправильно.

Этот код работает, но отформатирован неправильно :

List> data = new ArrayList>();
    for (RSSItem item : feed.getAllItems()) {
        Map datum = new HashMap(2);
        datum.put("title", item.getTitle());
        datum.put("date", item.getPubDate().toString());
        data.add(datum);
    }
    SimpleAdapter adapter = new SimpleAdapter(this, data,
                                              android.R.layout.simple_list_item_2,
                                              new String[] {"title", "date"},
                                              new int[] {android.R.id.text1,
                                                         android.R.id.text2});

    itemlist.setAdapter(adapter);

    itemlist.setOnItemClickListener(this);

    itemlist.setSelection(0);

incorrect date format

Мне нужен кто-то, кто поможет мне форматировать даты в формате «День», «Месяц», «Год» (четверг, 27 октября 2011 г.). Спасибо!

3 2011-10-27T18:28:33+00:00 2
 Community
Community
Редактировал вопрос 23-го мая 2017 в 10:32
Программирование
java
android
date
format
Jon Skeet
27-го октября 2011 в 6:37
2011-10-27T18:37:51+00:00
Дополнительно
Источник
Редактировать
#56791456

Проблема в том, что вы пытаетесь выполнить parse строку с тем же шаблоном, который вы позже используете в формате . Вы должны разобрать его с шаблоном, в котором он уже находится, что похоже на «Fri, 21 Oct 2011 12:00:00 GMT», по-видимому.

Поэтому я подозреваю, что вы хотите что-то вроде:

// You probably actually want to set the time zone of the
// formatting pattern - but you'll need to think what time zone you
// really want. We don't know enough to say. Ditto the locale...
private static final DateFormat PARSING_PATTERN = 
    new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US); 
private static final DateFormat FORMATTING_PATTERN = 
    new SimpleDateFormat("EEEE, MMMM dd, yyyy"); 

...

for (RSSItem item : feed.getAllItems()) {
    Map datum = new HashMap(2);
    datum.put("title", item.getTitle());

    String outputDate;
    try {
       Date date = PARSING_PATTERN.parse(item.getPubDate());
       outputDate = FORMATTING_PATTERN.format(date);
    } catch (ParseException e) {
       outputDate = "Invalid date";//Or whatever...
    } 
    datum.put("date", outputDate);
    data.add(datum);
}
4
0
nicholas.hauschild
27-го октября 2011 в 6:39
2011-10-27T18:39:48+00:00
Дополнительно
Источник
Редактировать
#56791457

EDIT:

Вам нужно изменить эту строку:

SimpleDateFormat curFormater = new SimpleDateFormat("EEEE, MMMM dd, yyyy");

Взгляните на форматы, доступные для SimpleDateFormat . То, что вы меняете, зависит от формата, который возвращается из корма RSS, который вы потребляете.

Итак, сегодня четверг, 27 октября 2011 года. Я думаю, что происходит то, что вы получаете ParseException , и поскольку вы не обрабатываете его, ваш dateObj остается установленным к новой Date () , которая находится прямо сейчас.

Образец, который вы читаете, скорее всего, неверен. (На самом деле это то же самое, что и формат, который вы хотите вывести, поэтому кажется бессмысленным, как оно есть.) Взгляните на шаблон, входящий в RSS-канал, и переоцените шаблон, который вы используете, для анализа в Дата .

Кроме того, вы, вероятно, захотите выбросить RuntimeException , если синтаксический анализ завершится с ошибкой, а не проглотить ParseException .

    try {
        dateObj = curFormater.parse(dateStr);
    } catch (ParseException e) {
        throw new RuntimeException("Couldn't parse dateStr: " + dateStr);
    } 
1
0
Похожие сообщества 28
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
18 324 пользователей
Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. Размещение бесплатное. 📌 ВАЖНО: Правила публикации и правила канала: 📌 Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-12-10
Открыть telegram
pro.jvm
pro.jvm
5 862 пользователей
Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш канал: @proJVM Вакансии: @jvmjobs @jvmjobschat Конфы: @jvmconf ⚠️ Оффтоп -> @flood ❌Переход на личности ❌Троллинг ❌Реклама ❌HH (вакансии) ❌Варез
Открыть telegram
learn.java
learn.java
5 163 пользователей
Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat
Открыть telegram
Java & Co
Java & Co
4 454 пользователей
Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/179171 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude
Открыть telegram
StartAndroid Ru Chat
StartAndroid Ru Chat
2 928 пользователей
Android чат сайта startandroid.ru Канал - @startandroid
Открыть telegram
Android Architecture
Android Architecture
2 785 пользователей
Русскоязычный чат для обсуждения архитектуры Android приложений. У нас атмосфера взаимопомощи и уважения друг к другу! Общий чат по Android: @android_ru Чат для вакансий: @mobile_jobs Подробнее: https://telegra.ph/Android-Architecture-06-02
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Roxana Elizabeth CASTILLO Avalos
Зарегистрирован 4 дня назад
2
Hideo Nakagawa
Зарегистрирован 5 дней назад
3
Sergiy Tytarenko
Зарегистрирован 1 неделю назад
4
shoxrux azadov
Зарегистрирован 1 неделю назад
5
Koreets Koreytsev
Зарегистрирован 1 неделю назад
© de-vraag 2022
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией