Вы используете неправильный формат, для "Sun, 02 Oct 2011 14:00:00 +0100" попробуйте это вместо:
new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.US)
Это также заставляет языковой стандарт (американский) английский, так что названия дня и месяца не зависят от языкового стандарта устройства, например ожидая "Dom" для "Sun" и "Oct" для "Out" в португальском языке (я заглянул в ваш профиль).
Формат, который вы задали в своем вопросе, сможет анализировать только даты, например "2011-10-02 14:00".
Кроме того, не добавляйте дату, пусть ваш анализатор выполняет синтаксический анализ.
Если вы хотите вывести / отобразить java.util.Date
определенным образом, просто создайте новый SimpleDateFormat
(назовем его displayFmt
) с желаемой строкой форматирования и вызовите format()
:
String formattedDate = new SimpleDateFormat("dd MM yyyy H").format(date);
Это даст вам что-то вроде «02 10 2011 17» на сегодняшний день, отформатированный в предпочтительной локали пользователя / устройства.
Обратите внимание, что в своем комментарии вы сказали dd mm yyyy h
(строчные буквы m
и h
), что дало бы вам "dayOfMonth минут год часов12" - я думаю, что это не то, что вы хочу, поэтому я изменил его на верхний регистр M
и верхний регистр H
, чтобы дать вам "dayOfMonth month year hours24 ".