首页 > 解决方案 > 将 String 转换为 ZonedDateTime 并更改 TimeZone

问题描述

我有这个字符串"Tue Apr 09 2019 12:59:51 GMT+0300"

我想转换为ZonedDateTime.

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("EEE MMM dd yyyy HH:mm:ss OOOO");
ZonedDateTime zdt = ZonedDateTime.parse(a, dtf);

转换为 后ZonedDateTime,我想将时区从更改GMT+0300为其他时区。

我的第一个问题是在parse. 我得到:

DateTimeParseException: Text 'Tue Apr 09 2019 12:59:51 GMT+0300' could not be parsed at index 25(在GMT+0300,我觉得OOOO不对,但我不知道还有什么)

之后我不知道如何更改时区。

标签: javadatetimezoneddatetime

解决方案


OOOO正如文档所说,期望在分钟字段之前有一个冒号:

四个字母输出完整形式,即本地化偏移文本,例如“GMT”,带有 2 位小时和分钟字段,如果非零,则可选第二个字段和冒号,例如“GMT+08:00”。

:您可以以编程方式在最后一个之前插入 a 00,然后对其进行解析。


推荐阅读