Столкнулся с проблемой, не работает следующий 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
Комментариев нет:
Отправить комментарий