Ниже мой код, но он выдает исключение, в котором говорится, что невозможно проанализировать формат даты.
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();
}
ваш inputFormat должен быть outputFormat и наоборот
убедитесь, что channelListArrayList.get(0).getTv().getProgramme().get(j).getStart();
возвращает правильное значение
@ShubhamVala возвращает значение 20180805231400 -0300 в виде строки.
проверьте мой отредактированный ответ
Использование слова: отметка времени - это «информация, определяющая, когда произошло определенное событие», так что да, строка в заголовке хорошо служит меткой времени.
В качестве отступления подумайте о том, чтобы выбросить давно устаревший и общеизвестно проблемный SimpleDateFormat
и его друзей и добавить ThreeTenABP в свой проект Android, чтобы использовать java.time
, современный API даты и времени Java. С ним намного приятнее работать.
OffsetDateTime.parse("20180805231400 -0300", DateTimeFormatter.ofPattern("uuuuMMddHHmmss xx", Locale.getDefault())).format(DateTimeFormatter.ofPattern("uuuu-MM-dd-HH:mm:ss", Locale.getDefault()))
дает 2018-08-05-23:14:00
.
Я надеюсь, ты сможешь сделать это вот так,
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();
}
20180805231400 -0300
- это не TimeStamp, а формат. TimeStamp обычно называется временем эпохи.