杰克逊要为JSON解析设置时区吗?

时间:2018-10-27 03:49:12

标签: java json parsing jackson

感觉有点迷路了。我以这种格式解析“日期”:

@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。我需要知道服务器的位置吗?

用户设置的时间和日期较早,那么时区是否与之相关?

如果我未明确设置时区,则会输入错误的日期。现在,我将时区设置为我的时区,但是我不确定这是否正确。

2 个答案:

答案 0 :(得分:2)

日期可能不是一个好对象,因为您必须解析HH:mm。

日期代表UTC 1970年1月1日之后的某个实例。而且您不能从0-23到一个小时就表示这一点

您可能应该考虑制作自定义的HourMinute对象和自定义的Deserializer / Serializer

您还应将时区作为某种补偿考虑在内。

如果我在柏林并且将最早的接送时间设置为1.00,该怎么办

纽约时间是凌晨-5点?

答案 1 :(得分:0)

服务器的时区和客户端的时区可以不同。我将服务器的默认时区设置为UTC。 随着时间的推移,我将强制客户端在每个请求中发送时区信息(可以作为请求参数或标头)。在服务器中,我会将其解析为UTC并作为时间戳保存在db中。 从db检索时,它将是UTC。我会再次转换为客户的时区并将其发送回去。

因此,理想情况下,只要您设置服务器的默认时区,服务器的位置就没有关系。您可以直接在服务器中设置它,也可以在启动时在应用程序中设置它。但是客户的位置确实很重要。您可能需要向他们显示自己所在时区的时间。不要手动添加时区偏移量。使用内置框架来处理夏时制等。