You are using the wrong format, for "Sun, 02 Oct 2011 14:00:00 +0100" try this instead:
new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.US)
It also forces the locale to (American) English, so the name of the day and month is independent of the device locale, for example. waiting for "Dom" for "Sun" and "Oct" for "Out" in Portuguese (I looked at your profile).
The format that you have in your question will be able to handle dates like "2011-10-02 14:00".
Also, don't add a date; let your formatter do the parsing.
If you want to display / display a java.util.Date specific way, just create a new SimpleDateFormat (call it displayFmt ) with the desired format string and call format() on it:
String formattedDate = new SimpleDateFormat("dd MM yyyy H").format(date);
This will give you something like โ02.10.2011 17โ today, formatted in the preferred user / device locale.
Please note that in your comment you said dd mm yyyy h (lowercase m and h ) which will give you โdayOfMonth minutes year hours12โ - I think that is not what you want, so I changed it to uppercase m and uppercase h to give you "dayOfMonth month year hours24".
source share