【发布时间】:2018-12-28 19:48:23
【问题描述】:
我正在尝试通过对我的 Spring Boot 应用程序的获取请求来检索具有日期字段的对象。数据库中的日期正确,调试时正确,但杰克逊反序列化时更改了 1 小时。
在课堂上
@JsonFormat(pattern = "dd-MM-yyyy HH:mm")
private Date matchDate;
在 application.properties 中
spring.jackson.deserialization.adjust-dates-to-context-time-zone=false
我不知道它为什么要改变它们,我希望 jackson 完全按原样反序列化日期
【问题讨论】:
-
您的计算机使用的是哪个时区,您的数据库使用的是哪个时区?
-
Date没有任何时区信息。因此,您可能会看到这个问题。 -
假设我告诉你我不相信你。请不要被冒犯,而是向我们展示一个我们都可以尝试并非常清楚地证明我错了的例子。该示例将获取并显示原始格式的日期,打印它,然后获取最终格式的日期,然后打印它。
-
您是说 Jackson “反序列化”您的对象,但实际上它应该是 serialising 从数据库读取并通过 HTTP 传递时。话虽如此,我认为 adjust-dates-to-context-time-zone 不会影响您看到的行为,因为它仅用于反序列化。
标签: java date spring-boot jackson