gpt4 book ai didi

java - 未指定偏移量如何解析?

转载 作者:行者123 更新时间:2023-12-01 16:47:10 25 4
gpt4 key购买 nike

我的时间为 12:00:00,格式为 HH:mm:ss。
我知道这次来自设置了 +3 偏移量的服务器。
如果我使用 SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");,它会根据设备解析时间,该设备可以位于不同的时区。
除了将其添加到原始字符串之外,还有其他方法可以解析+3偏移量吗?

最佳答案

首先,您的服务器是否应该以 UTC 格式发送时间?如果客户遍布各地,这看起来会更加时区中立和标准化。然而,在代码中处理它的方式不会有太大不同。在任何情况下,UTC 格式的服务器偏移量都可以是常量:

private static final ZoneOffset serverOffset = ZoneOffset.ofHours(3);

不过,在实际代码中,您可能希望以某种方式对其进行配置。解析:

    OffsetTime serverTime = LocalTime.parse("12:00:00").atOffset(serverOffset);
System.out.println(serverTime);

这会打印

12:00+03:00

由于您的时间格式与 LocalTime 的默认格式 (ISO 8601) 一致,因此我们不需要显式格式化程序。如果您只需要带偏移量的时间表示,那么我们就完成了。如果您需要转换为用户的本地时间,为了可靠地完成此操作,您需要确定时区和日期:

    LocalTime clientTime = serverTime.atDate(LocalDate.of(2018, Month.JANUARY, 25))
.atZoneSameInstant(ZoneId.of("Indian/Maldives"))
.toLocalTime();
System.out.println(clientTime);

通过选择的日期和区域,我们得到

14:00

请替换您所需的时区和日期。

假设一下,如果您知道用户与 UTC 的偏移量,则可以使用:

    LocalTime clientTime = serverTime.withOffsetSameInstant(ZoneOffset.of("-08:45"))
.toLocalTime();

该示例生成 00:15。然而,没有人知道政客何时引入夏令时 (DST) 或用户所在时区的其他异常情况,因此我不建议单独依赖偏移量。

是的,我也在使用java.timeSimpleDateFormat 不仅已经过时,而且非常麻烦,所以我强烈推荐 java.time

关于java - 未指定偏移量如何解析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48419684/

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