Конвертировать дату в формат "17. Декабрь 2015"

Я получаю дату в виде "20150119" и хочу преобразовать ее в формат "19 января 2015".

Как я могу конвертировать дату в таком формате.

Я попробовал ниже код:

private void convertDate() {
        String m_date = "20150119";
        SimpleDateFormat originalFormat = new SimpleDateFormat("yyyy.MM.dd");
        try {
            Date date = originalFormat.parse(m_date.toString());
            Log.e("Date is====", date.toLocaleString());
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

Но это дает мне ошибку:

java.text.ParseException: не разбираемая дата: "20150119" (со смещением 8)

2 ответа

Решение

Вам нужно будет указать два формата: один для анализа вашего ввода, другой для форматирования вашего вывода.

  1. Ошибка возникает из-за того, что строка, которую вы пытаетесь проанализировать, не соответствует формату, указанному вами в originalFormat: что нужно быть

    SimpleDateFormat originalFormat = new SimpleDateFormat("yyyyMMdd");
    

    если вы хотите разобрать строки формата String m_date = "20150119";, Разбор строки с этим форматом даст вам Date:

    Date date = originalFormat.parse(m_date);
    
  2. Тогда вы можете использовать другой формат для вывода Date:

    SimpleDateFormat outputFormat = new SimpleDateFormat("dd. MMMM yyyy");
    System.out.println("Date: " + outputFormat.format(date));
    

Вы используете DateFormat

SimpleDateFormat originalFormat = new SimpleDateFormat("yyyy.MM.dd");

Так SimpleDateFormat ожидает String лайк "2015.01.19" (обратите внимание на точки).

Вы поставляете String

String m_date = "20150119";

поэтому не содержит точек SimpleDateFormat не могу разобрать String так как он не содержит точек (как указано вами).

Разобрать свой String ты должен использовать

SimpleDateFormat originalFormat = new SimpleDateFormat("yyyyMMdd");

Чтобы распечатать проанализированную дату, вы должны использовать другой SimpleDateFormat например

SimpleDateFormat targetFormat = new SimpleDateFormat("dd. MMMM yyyy");

Тогда вы можете использовать метод format() отформатировать вашу дату в формате, который вы хотите.

Другие вопросы по тегам