【问题标题】:Jackson is changing date to one day old in spring boot rest application.Jackson 在 Spring Boot Rest 应用程序中将日期更改为一天。
【发布时间】:2017-08-13 09:13:54
【问题描述】:

我用 spring boot 1.5.2 创建了一个简单的应用程序。我正在传递日期,并且已经在 application.properties 文件中提到了日期格式,如下所示: spring.jackson.joda-date-time-format=yyyy-MM-dd

但是,当使用任何客户端为 POST(Insert) 或 PUT(Update) 调用其余服务时,日期将更改为当天。示例 2017-03-21 将更改为 2017-03-20。

【问题讨论】:

  • 你是如何映射实体日期属性的?它们是什么类型的?您使用的是@Type 吗?信息太少,无法帮助您。
  • 服务器和客户端是否在同一个时区?
  • 这是一个时区问题。 Jackson 将您的日期(默认为本地时区)转换为另一个时区。我发现解决此问题的唯一方法是将 ZonedDateTime 设置为 UTC。
  • 您好 Sundararj,是的,服务器和客户端位于同一时区。
  • 你好 Guillaume,我如何将时区更改为 UTC 我试图通过更改 application.property 文件中的以下属性来修复它:spring.jackson.deserialization.adjust-dates-to-context-time- zone=false

标签: spring spring-boot jackson


【解决方案1】:

我遇到了同样的问题,我以这种方式解决了它: 在您的实体中,添加这些注释:

@Temporal(TemporalType.DATE)
@JsonFormat(shape = JsonFormat.Shape.STRING, locale = "fr-FR", timezone = "Europe/Paris")
private Date yourDate;

或者您可以将这些行添加到 application.properties 文件中:

spring.jackson.time-zone=Europe/Paris
spring.jackson.locale=fr_FR

如果您在另一个国家/地区,您可以更改语言环境和时区,但即使您保留法国,也可以。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-15
    • 2018-02-24
    • 2018-12-14
    • 2018-02-19
    • 2019-08-07
    • 1970-01-01
    • 2019-04-03
    • 2020-08-30
    相关资源
    最近更新 更多