lacas
lacas

Reputation: 14066

Joda time convert ISO8601 GMT to local

I have this from my server:

2017-04-07T11:00:00.000Z

How can I convert it to local time? Here is my code, but all I got is an exception:)

java.lang.IllegalArgumentException: Invalid format: "2017-04-07T11:00:00.000Z" is malformed at "Z"

DateTimeFormatter inputFormatter = DateTimeFormat
                .forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ") //yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ
                .withLocale(Locale.US);

        DateTime parsed = inputFormatter.parseDateTime(gmtDate);

        DateTimeFormatter outputFormatter = DateTimeFormat
                .forPattern("HH:mm")
                .withLocale(Locale.US)
                .withZone(DateTimeZone.getDefault());

        return outputFormatter.print(parsed);

Upvotes: 1

Views: 280

Answers (1)

user7605325
user7605325

Reputation:

Just change your pattern to yyyy-MM-dd'T'HH:mm:ss.SSSZ, like this:

DateTimeFormatter inputFormatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
                                   .withLocale(Locale.US);

In my case, the result of outputFormatter.print(parsed) is 08:00 (my local time, as my default timezone is America/Sao_Paulo)

Upvotes: 1

Related Questions