gpt4 book ai didi

java - 区域的 LocalDateTime 不显示区域的一天中的小时

转载 作者:行者123 更新时间:2023-11-29 07:26:55 25 4
gpt4 key购买 nike

我在 LocalDateTime lastUpdated 中有一个 UTC 日期和时间。我想显示给定区域的时间和日期,但无论在哪个区域,我都会得到同一天的时间。对于以下代码:

System.out.println(lastUpdated);
System.out.println(lastUpdated.atZone(ZoneId.of("Europe/Paris")));
System.out.println(lastUpdated.atZone(ZoneId.of("America/Los_Angeles")));

我得到:

2018-05-26T21:33:46
2018-05-26T21:33:46+02:00[Europe/Paris]
2018-05-26T21:33:46-07:00[America/Los_Angeles]

但我想得到的是:

2018-05-26T21:33:46
2018-05-26T**23**:33:46+02:00[Europe/Paris]
2018-05-26T**14**:33:46-07:00[America/Los_Angeles]

区域信息对我来说是可选的。我只需要适当的时间在区域。有办法实现吗?

最佳答案

我的印象是您混淆了“无时区信息”并将其等同于“UTC 时区...因为当我不说时区是什么时它是 UTC...对吗?”

错了。如果您不说时区是什么,那么您就没有关于时区的任何具体信息。

所以你的 2018-05-26T21:33:46 不是日期和时间,UTC,它是这个日期的日期和时间的概念,不知道时区的概念存在。当你去问某人今天是几号和几点钟时,你会得到什么。不,他们不会认为您可能还想考虑它在您当前所在的时区内。这个人根本不会认为存在时区这样的东西,但他会能够知道现在是什么日期和时间。

因此,要将日期时间 (UTC) 转换为其他时区的日期时间,您可以这样做:

ZonedDateTime time = lastUpdated.atZone(ZoneId.of("UTC"));
System.out.println(time);
System.out.println(time.withZoneSameInstant​(ZoneId.of("Europe/Paris")));
System.out.println(time.withZoneSameInstant​(ZoneId.of("America/Los_Angeles")));

关于java - 区域的 LocalDateTime 不显示区域的一天中的小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50555846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com