将客户端的时区与服务器的时区进行比较,如果不同则获取客户端本地时间

Comparing timezone from client with the server one and get client local time if different

在我的设置中,我有服务器和客户端,我必须知道它们是否处于同一时区(因此是同一当地时间)。

客户端可以向服务器发送时区 ID(如 "Europe/Berlin")、具有夏令时调整的时区偏移量 (int) 或没有夏令时调整的原始偏移量 (int)。

如果时区相同,那么我可以假设(如果我错了请纠正我)客户端本地时间与服务器本地时间相同,否则我必须获取客户端本地时间。

看到java、ZoneIdZoneOffsetTimeZone里面有好几个类,有点迷茫到底该用哪个。 至于输入,我正在考虑使用带夏令时调整的区域 ID 或偏移量。

感谢您的帮助

更新:我只想补充一点,我的意思是服务器时区对我来说是一个参考,并没有定义为系统默认值。就我而言,我将其视为 ZoneId.of("Europe/Rome").

"If the timezone are the same so I can assume (correct me if I am wrong) the client localtime is the same as server localtime, else I have to get the client localtime.",是的。如果客户端时区等于服务器时区,则两个本地时间相同。

TimeZone 是旧 Java class 用于处理日期的 class。不要使用它。

ZoneId is a class from the new java.time package that is much more robust and has a nicer design. It describes a timezone like "Europe/Berlin". This class is used to involve things like daylight saving adjustments in calculation. A ZoneId uses a different ZoneOffset 根据冬季和夏季计算。因此 ZoneOffset 是新包中的 class 来描述特定的偏移量,而不管其他因素,例如夏令时调整。

因为你对一个时区的本地时间感兴趣,你必须在这里使用ZoneId。您也可以使用 ZoneOffset,但您会丢失有关特定时区的信息,因为多个时区可以具有相同的偏移量。