代码之家  ›  专栏  ›  技术社区  ›  breakline

Jackson如何设置JSON解析的时区?

  •  1
  • breakline  · 技术社区  · 7 年前

    感觉有点迷路。我用以下格式解析“日期”:

    @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 回复  |  直到 7 年前
        1
  •  2
  •   Ryan S.    7 年前

    日期表示UTC 1970年1月1日之后的某个时间实例。你不能用从0到23的一个小时来表示

    你也可以考虑时区作为某种补偿。

    如果我在柏林,把最早的接送时间定在1点怎么办

    纽约时间是凌晨5点吗?

        2
  •  0
  •   shankulk    7 年前

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

    所以理想情况下,只要您设置服务器的默认时区,服务器的位置就无关紧要。您可以直接在服务器中设置,也可以在启动时在应用程序中设置。然而,客户的位置确实很重要。你可以给他们显示他们自己时区的时间。不要手动添加时区偏移。使用内置框架处理日光节约等。