感觉有点迷路了。我以这种格式解析“日期”:
@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。我需要知道服务器的位置吗?
用户设置的时间和日期较早,那么时区是否与之相关?
如果我未明确设置时区,则会输入错误的日期。现在,我将时区设置为我的时区,但是我不确定这是否正确。
答案 0 :(得分:2)
日期可能不是一个好对象,因为您必须解析HH:mm。
日期代表UTC 1970年1月1日之后的某个实例。而且您不能从0-23到一个小时就表示这一点
您可能应该考虑制作自定义的HourMinute对象和自定义的Deserializer / Serializer
您还应将时区作为某种补偿考虑在内。
如果我在柏林并且将最早的接送时间设置为1.00,该怎么办
纽约时间是凌晨-5点?
答案 1 :(得分:0)
服务器的时区和客户端的时区可以不同。我将服务器的默认时区设置为UTC。 随着时间的推移,我将强制客户端在每个请求中发送时区信息(可以作为请求参数或标头)。在服务器中,我会将其解析为UTC并作为时间戳保存在db中。 从db检索时,它将是UTC。我会再次转换为客户的时区并将其发送回去。
因此,理想情况下,只要您设置服务器的默认时区,服务器的位置就没有关系。您可以直接在服务器中设置它,也可以在启动时在应用程序中设置它。但是客户的位置确实很重要。您可能需要向他们显示自己所在时区的时间。不要手动添加时区偏移量。使用内置框架来处理夏时制等。