Joda时间将ISO8601 GMT转换为本地

时间:2017-03-30 13:50:38

标签: android jodatime

我的服务器上有这个:

  

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);

1 个答案:

答案 0 :(得分:1)

只需将您的模式更改为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