Joda 时间将 ISO8601 GMT 转换为本地时间

Joda time convert ISO8601 GMT to local

我的服务器有这个:

2017-04-07T11:00:00.000Z

如何将其转换为当地时间?这是我的代码,但我得到的只是一个例外:)

java.lang.IllegalArgumentException:格式无效:“2017-04-07T11:00:00.000Z”格式错误 "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);

只需将模式更改为 yyyy-MM-dd'T'HH:mm:ss.SSSZ,如下所示:

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

在我的例子中,outputFormatter.print(parsed) 的结果是 08:00(我的本地时间,因为我的默认时区是 America/Sao_Paulo