我正在接收包含以下格式的时间的json对象。
...
"start_time": "2020-12-30T17:30:00Z",
...
我已经分析了它并分配给 ZonedDateTime
```
ZonedDateTime start_time = ZonedDateTime.parse(jsonObject.getString("start_time"));
现在我想把它展示给大家看 `String` 用户设备的本地时区。
我相信json时间在utc区域。所以香港的用户会看到+8偏移,而洛杉矶的用户会看到-8偏移。所以他们会看到如下。
香港用户:2020-12-31 01:30
洛杉矶用户:2020-12-30 09:30
2条答案
按热度按时间oknrviil1#
如果这些设备已正确配置时区,则可以使用
为了得到你的结果
qzlgjiam2#
你的意见
"2020-12-30T17:30:00Z"
是标准iso 8601格式。这个Z
“在结尾”表示与utc的偏移量为零小时分秒,发音为“zulu”。我们还将祖鲁日期时间称为“utc”。您应该将这些输入解析为
Instant
,而不是ZonedDateTime
从你的问题中可以看出。要通过特定地区的人使用的挂钟时间(偏移量)查看同一时刻,请指定时区(
ZoneId
)生产ZonedDateTime
.…还有…
所有三个物体都指向同一时刻,时间线上的同一点。
要生成字符串,请调用
toString
.请在ideone.com上查看此代码的实时运行。
instant.tostring():2020-12-30t17:30:00z
zdthongkong.tostring():2020-12-31t01:30+08:00[亚洲/香港]
zdtlosangeles.tostring():2020-12-30t09:30-08:00[美国/洛杉矶]
要生成特定格式的文本,请使用
DateTimeFormatter
班级。该类还可以自动本地化生成文本。2020年12月31日凌晨1:30
所有这些都已经在堆栈溢出上讨论过很多次了。因此,搜索以了解更多信息。并在发布前彻底搜索堆栈溢出。