objectmapper.readvalue自动更改时区

时间:2018-03-09 08:17:23

标签: java json spring objectmapper

我从前端发送日期,格式如下。

  

[{"起始日期":" 2018年3月9日"}]

在春天,我使用ObjectMapper在POJO中获取它。 使用ObjectMapper.readValue时会转换为低于日期。

  

Fri Mar 09 05:30:00 IST 2018

我已经尝试了以下代码。

ObjectMapper objectMapper = new ObjectMapper().setTimeZone(TimeZone.getTimeZone("UTC"));

但它不适合我。 仍然得到Fri Mar 09 05:30:00 IST 2018作为输出。

如何使代码独立于时区。

1 个答案:

答案 0 :(得分:0)

您正在将字符串日期映射到Date对象。没有时区,您无法拥有日期对象。映射器正确应用UTC时区,日期存储为2018-03-09 00:00:00 UTC,IST存储为2018-03-09 05:30:00 IST。如果您想要2018-03-09 00:00:00 IST时间而不是UTC,请传递IST

如果您希望在没有时区的情况下发送日期,可以使用注释执行此操作,如下所示(需要json-jackson版本> = 2.0)

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone="Asia/Kolkata")
private Date date;