Преобразование строк даты и времени в дату в определенном формате

Я работаю над приложением для Android.

Я получаю строку даты и строку времени из JSON файл.

fecha_reporte = "2017-12-17" 

hora_reporte = "23:51:00"

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

Это то, что я до сих пор:

String fecha = fecha_reporte + " " + hora_reporte;

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd H:m:s");
String dateInString = fecha;

try {

    Date date2 = formatter.parse(dateInString);
    System.out.println(date2);
    System.out.println(formatter.format(date2));
    Log.d("DURACION","DURACION REPORTE: calculado: "+date2);

} catch (ParseException e) {
    e.printStackTrace();
}

Выходные данные являются датой, но в следующем формате:

Sun Dec 17 23:51:00 GMT-07:00 2017

Мне нужно это в следующем формате: 2017-12-17 23:51:00

1 ответ

Решение

java.time

Вы используете проблемные старые классы даты и времени, которые теперь унаследованы. Избежать их. Теперь вытеснены классами java.time.

Разобрать ваши входные строки как LocalDateTime поскольку им не хватает информации о часовом поясе или смещении от UTC.

Добавить T соответствовать стандарту ISO 8601.

String input = "2017-12-17" + "T" + "23:51:00" ;
LocalDateTime ldt = LocalDateTime.parse( input ) ;

Создайте строку в желаемом формате, позвонив toString и заменить T в середине с пробелом.

ldt.toString().replace( "T" , " " ) ;

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

Для более ранних версий Android см. Проекты ThreeTen- Backport и ThreeTenABP.

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