java - 将 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
不对,但我不知道还有什么)
之后我不知道如何更改时区。
解决方案
OOOO
正如文档所说,期望在分钟字段之前有一个冒号:
四个字母输出完整形式,即本地化偏移文本,例如“GMT”,带有 2 位小时和分钟字段,如果非零,则可选第二个字段和冒号,例如“GMT+08:00”。
:
您可以以编程方式在最后一个之前插入 a 00
,然后对其进行解析。
推荐阅读
- android - 通过官方 API 在不使用 GPS 和 Google 服务的情况下获取位置
- c# - 绑定到属性在 CodeBehind 中不起作用,但在 xaml 中起作用
- java - 该字段应该在接口中还是应该在每个类中编写?
- python - 创建 OAuth 用户 ID
- javascript - 更好地理解查找字符串排列的解决方案 - javascript
- c# - 会话值未保留或在 dotnetcore webapi 中不起作用
- java - 三元运算符有问题
- android - 推动从“内部测试”轨道发布到生产
- python - for循环中numpy数组的计算结果错误
- bash - 从 Bash 检查 postgres 查询的结果