Search code examples
javaandroiddatesimpledateformatformatexception

java.text.ParseException: Unparseable date: "2018-05-23T06:39:37+0000"


I'm trying to create a Date from a String I receive from the server. The String is:

2018-05-23T06:39:37+0000

So the correct format should be:

yyyy-MM-dd'T'HH:mm:ss.SSSZ

Here is my code:

String createdDate = comment.getCreatedDateTime();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.US);
try {
    Date parsedDate = simpleDateFormat.parse(createdDate);
    createdDate = parsedDate.toString();
} catch (ParseException ex) {
    ex.printStackTrace();
}
mCommentDate.setText(createdDate);

I don't know if there is any way to do this, because after that I would like to parse again to the next format:

dd/MM/yyyy hh:mm

I've tried to parse the original String using this last format directly but I'm getting the same exception.

Any suggestion?


Solution

  • Ok, the first mistake (as you've pointed) is I didn't have milliseconds on the original String.

    After removing "SSS" from the simpleDateFormat it works like a charm. So this is the final code:

    String createdDate = comment.getCreatedDateTime();
    SimpleDateFormat defaultDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.getDefault());
    try {
        Date parsedDate = defaultDateFormat.parse(createdDate);
        SimpleDateFormat finalDateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm", Locale.getDefault());
        createdDate = finalDateFormat.format(parsedDate);
    } catch (ParseException ex) {
        ex.printStackTrace();
    }
    mCommentDate.setText(createdDate);