猿问

Jackson 为 JSON 解析设置什么时区?

我以这种格式解析“日期”:


@JsonProperty("earliest_pick_up_time")

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm", timezone = "Europe/Berlin")

private Date earliestPickUpTime;

但它并不是真正的日期,因为来源是小时和分钟,例如 14:43 或 16:12 等。


这里的时区是什么?什么时区?服务器?装置?我是否需要计算设备的位置,以便它始终正确显示?在这种情况下,无论用户是在柏林还是澳大利亚,14:43 都是 14:43。我需要知道服务器的位置吗?


用户提前设置了这个时间和日期,那么时区是指那个吗?


如果我没有明确设置时区,我会得到错误的日期。现在我将时区设置为我的时区,但我不确定这是否正确。


大话西游666
浏览 425回答 2
2回答

富国沪深

日期可能不是一个好对象,因为您必须解析 HH:mm。日期表示 1/1/1970 UTC 之后的某个时间实例。你不能用 0-23 的一个小时来表示您可能应该考虑制作自定义 HourMinute 对象和自定义反序列化器/序列化器您还会将时区视为某种偏移量。如果我在柏林并且我将最早的接送时间设置为 1.00 怎么办纽约时间是-5am吗?

芜湖不芜

服务器的时区和客户端的时区可以不同。我会将服务器的默认时区设置为 UTC。随着时间的推移,我会强制客户端在每个请求中发送时区信息(可能作为请求参数或标头)。在服务器中,我会将其解析为 UTC 并将其作为时间戳保留在 db 中。从数据库中检索时,它将是 UTC。我会再次转换为客户的时区并将其发回。所以理想情况下,只要您设置服务器的默认时区,服务器的位置就无关紧要。您可以直接在服务器中设置它或在启动时在应用程序中设置它。然而,客户的位置真的很重要。您可能希望在他们自己的时区向他们显示时间。不要手动添加时区偏移量。使用内置框架来处理夏令时等。
随时随地看视频慕课网APP

相关分类

Java
我要回答