Android: я не могу понять, SimpleDateFormat - PullRequest
2 голосов
/ 15 июня 2011

Я пытался и пытался, но я не могу заставить свое приложение RSS правильно отформатировать pubDate в более удобный для пользователя формат.

    String str = "26/08/1994";

    SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); //please notice the    capital M
  Date date = formatter.parse(str);

Этот код выглядит достаточно просто, но я получаю необработанную ошибку синтаксического анализа типа в formatter.parse (str).Как только это заработает, мне нужно будет преобразовать мою RSS-публикацию в MM / dd.

Строка кода для установки текста для этого здесь:

  listPubdate.setText(myRssFeed.getList().get(position).getPubdate());

Я просто изменитьэто к:

  listPubdate.setText(date);

Это выглядит так просто, что сводит меня с ума, что я не могу найти ответ.

Ответы [ 5 ]

3 голосов
/ 15 июня 2011

вы можете получить дату по этому

// get the current date
            final Calendar c = Calendar.getInstance();
            mYear = c.get(Calendar.YEAR);
            mMonth = c.get(Calendar.MONTH);
            mDay = c.get(Calendar.DAY_OF_MONTH);

и хотите поместить в простой формат, тогда

String date=String.format(mDay+"/"+mMonth+"/"+mYear);

так что вы можете использовать это очень легко.

1 голос
/ 15 июня 2011

Мне кажется, что вы на самом деле запускаете это и получаете сообщение об ошибке.Как уже отмечали другие, проблема в том, что вам нужно заключить вызов formatter.parse в блок try / catch.Это проблема компиляции , а не проблема времени выполнения.

Ваш код будет работать так, как вы ожидаете, как только вы исправите эту проблему компиляции.

Используйте второй форматер, чтобы получить нужный вывод MM / dd.

    String str = "26/08/1994";

    SimpleDateFormat inputFormatter = new SimpleDateFormat("dd/MM/yyyy"); //please notice the    capital M
    SimpleDateFormat outputFormatter = new SimpleDateFormat("MM/dd");

    try {
        Date date = inputFormatter.parse(str);
        String text = outputFormatter.format(date);
        listPubdate.setText(text);
    } catch (ParseException e ) {
        e.printStackTrace();
    }
1 голос
/ 15 июня 2011

Я получаю необработанную ошибку синтаксического анализа типа на formatter.parse (str)

Для этого вам нужно будет явно обработать исключение, либо заявив, что выполняющийся в данный моментМетод просто выбрасывает его или ловит.Для получения дополнительной информации я настоятельно рекомендую пройти урок исключений в руководстве по Java .

Вот пример перехвата исключения:

String str = "26/08/1994";
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); //please notice the    capital M
Date date;
try
{
  date = formatter.parse(str);
}
catch (ParseException e)
{
  // Handle error condition.
}
0 голосов
/ 15 июня 2011

Ниже приведен пример кода ... обратите внимание на формат в конструкторе SimpleDateFormat.Эта строка, которую нужно проанализировать на дату, должна быть похожа по формату на строку, переданную в конструкторе SimpleDateFormat

public Date getDate (String str) {SimpleDateFormat sdFormat = new SimpleDateFormat ("EEE MMM dd чч: мм: сс«);Дата d = ноль;

    try {

        String str1 = str.substring(0, str.lastIndexOf(" ")).substring(0,
                str.lastIndexOf(" "));
        String str2 = str1.substring(0, str1.lastIndexOf(" "));
        Log.v("str1", str2);

        d = sdFormat.parse(str2);
    } catch (java.text.ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return d;
}
0 голосов
/ 15 июня 2011

SimpleDateformat.parse (String) генерирует проверенное исключение ... обернуть его в блок try / catch.

...