Прежде всего, я рекомендую вам отказаться от использования старых классов Date
и SimpleDateFormat
. Они устарели, полны ошибок и проблем с дизайном и заменен новым API даты/времени.
Если вы используете Java 8, рассмотрите возможность использования нового java. API времени.
Если вы используете Java ‹= 7, вы можете использовать ThreeTen Backport, отличный бэкпорт для новых классов даты/времени Java 8. А для Android есть ThreeTenABP (подробнее о том, как его использовать здесь).
Код ниже работает для обоих. Единственная разница заключается в именах пакетов (в Java 8 — java.time
, а в ThreeTen Backport (или ThreeTenABP для Android) — org.threeten.bp
), но имена классов и методов одинаковы.
Чтобы проанализировать нужный String
, просто создайте DateTimeFormatter
и установите java.util.Locale
на английский язык, чтобы убедиться, что дни недели и названия месяцев (в вашем случае Wed
и Jun
) анализируются правильно. Если вы не установите локаль, будет использоваться система по умолчанию (и если по умолчанию не английский язык, это не сработает).
String date = "Wed Jun 21 14:14:23 GMT+08:00 2017";
// create formatter (using English locale to make sure weekdays and month names are parsed correctly)
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH);
// parse local date
LocalDate dt = LocalDate.parse(date, fmt);
System.out.println(dt.toString()); // 2017-06-21
Результат:
2017-06-21
person
Community
schedule
13.06.2017