Страницы

Поиск по вопросам

среда, 8 мая 2019 г.

java.text.ParseException: Unparseable date

Столкнулся с проблемой, не работает следующий java - код:
String s_date = " Ср, 16 12 2015 16:24:31 GMT"; SimpleDateFormat sdf = new SimpleDateFormat( " dd MM yyyy hh:mm:ss " ); Date date = sdf.parse( s_date ); System.out.println( sdf.format( date ) );
Выкидывает:
java.text.ParseException: Unparseable date: " Ср, 16 12 2015 16:24:31 GMT"
Можно конечно обрезать первые пять символов и последние четыре. Но у меня будет много разных форматов дат, и для каждой разный подход. Как сделать чтобы SimpleDateFormat.parse(), парсил только то что указано?
Если в коде не видно, я в задании шаблона подставил 5 пробелов в начале и 4 в конце, это не помогло.


Ответ

Конкретно в вашем случае надо править форматную строку:
// было: "dd MM yyyy hh:mm:ss" // модификации: EEE - день недели строкой, HH - час 0-23, zzz - временная зона SimpleDateFormat sdf = new SimpleDateFormat( " EEE, dd MM yyyy HH:mm:ss zzz", new Locale("ru", "RU") ); Date date = sdf.parse( s_date ); System.out.println( sdf.format( date ) ); //Вывод: Ср, 16 12 2015 19:24:31 MSK
Новое API:
DateTimeFormatter newFormatter = DateTimeFormatter.ofPattern( "E, d M y H:m:s z", new Locale("ru", "RU") ); ZonedDateTime newDate = ZonedDateTime.parse( s_date.trim(), newFormatter ); System.out.println( newFormatter.format( newDate )); // Вывод: Ср, 16 12 2015 16:24:31 GMT

Комментариев нет:

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