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
)
我的服务器有这个:
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
)