Как получить время в формате ЧЧ: мм: сс из отметки времени 20180805231400 -0300

Ниже мой код, но он выдает исключение, в котором говорится, что невозможно проанализировать формат даты.

     try{

        DateFormat outputFormat = new SimpleDateFormat("yyyyMMddHHmmss zzzz", Locale.getDefault());
        DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss", Locale.getDefault());

        String inputText = channelListArrayList.get(0).getTv().getProgramme().get(j).getStart();
        Date date = inputFormat.parse(inputText);
        String outputText = outputFormat.format(date);

      } catch (Exception e) {
         e.printStackTrace();
      }
20180805231400 -0300 - это не TimeStamp, а формат. TimeStamp обычно называется временем эпохи.
ADM 10.08.2018 14:04

ваш inputFormat должен быть outputFormat и наоборот

Vladyslav Matviienko 10.08.2018 14:06

убедитесь, что channelListArrayList.get(0).getTv().getProgramme().get(j).ge‌​tStart(); возвращает правильное значение

Shubham Vala 10.08.2018 14:08

@ShubhamVala возвращает значение 20180805231400 -0300 в виде строки.

Nitesh Rathod 10.08.2018 14:21

проверьте мой отредактированный ответ

Jay Mungara 10.08.2018 15:35

Использование слова: отметка времени - это «информация, определяющая, когда произошло определенное событие», так что да, строка в заголовке хорошо служит меткой времени.

Ole V.V. 10.08.2018 20:55

В качестве отступления подумайте о том, чтобы выбросить давно устаревший и общеизвестно проблемный SimpleDateFormat и его друзей и добавить ThreeTenABP в свой проект Android, чтобы использовать java.time, современный API даты и времени Java. С ним намного приятнее работать.

Ole V.V. 10.08.2018 20:55
OffsetDateTime.parse("20180805231400 -0300", DateTimeFormatter.ofPattern("uuuuMMddHHmmss xx", Locale.getDefault())).format(DateTimeFormatter.ofPattern("uu‌​uu-MM-dd-HH:mm:ss", Locale.getDefault())) дает 2018-08-05-23:14:00.
Ole V.V. 10.08.2018 21:05
2
8
1 591
2

Ответы 2

Я надеюсь, ты сможешь сделать это вот так,

    oldfmt = "yyyyMMddHHmmss zzzz";
    newfmt = "HH:mm:ss";
    getTimeFromUtc(oldfmt, newfmt, "20180805231400 -0300");

public void getTimeFromUtc(String oldFormat, String newformat, String datetime) {
    SimpleDateFormat inputFormat = new SimpleDateFormat(oldFormat);
    inputFormat.setTimeZone(TimeZone.getTimeZone("GMT"));

    SimpleDateFormat outputFormat = new SimpleDateFormat(newformat, Locale.getDefault());
    TimeZone defaultTimezone = TimeZone.getDefault();
    outputFormat.setTimeZone(defaultTimezone);
    String inputDateStr = datetime;
    Date date = null;
    try {
        date = inputFormat.parse(inputDateStr);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    if (date != null) {
        outputDateStr = outputFormat.format(date);
    }
    Toast.makeText(getApplicationContext(), outputDateStr, Toast.LENGTH_LONG).show();
}

Попробуй это,

try{

 DateFormat inputFromat = new SimpleDateFormat("yyyyMMddHHmmss zzzz", Locale.getDefault());
 DateFormat outputFormat= new SimpleDateFormat("HH:mm:ss", Locale.getDefault());

 String inputText = channelListArrayList.get(0).getTv().getProgramme().get(j).getStart();
                Date date = inputFormat.parse(inputText);
                String outputText = outputFormat.format(date);
} catch (Exception e) {
        e.printStackTrace();
}

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