【问题标题】:Spring jackson:date-format formatting changes after upgradeSpring jackson:升级后的日期格式格式更改
【发布时间】:2016-04-11 12:34:42
【问题描述】:

从 spring boot 1.2.6.RELEASE -> 1.3.1.RELEASE 升级后,使用带时区偏移的 iso 8101 日期格式似乎存在问题。 在我的 application.yml 中,杰克逊日期格式设置为带有时区偏移的格式

spring:
   jackson:
      date-format: yyyy-MM-dd'T'HH:mm:ss.SSSXXX

使用启动 1.2.6,这会导致日期时间格式具有正确的 iso 8601 时区格式,例如 2014-01-01T23:01:01.010+01:00

但在启动 1.3.1 时,格式保持在祖鲁时区 2014-01-01T22:01:01.010Z

【问题讨论】:

    标签: spring-boot


    【解决方案1】:

    默认情况下,杰克逊使用 GMT 时区。您可以通过添加到您的配置文件来更改它:

    spring: jackson: time-zone: Europe/Berlin

    或通过使用更改某些属性

    public class DateStuff { @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd,HH:00", timezone="CET") public Date creationTime; }

    Jackson FAQ: Date Handling

    【讨论】:

    • 是的,通常我可以,但就我而言,我没有要注释的域模型,因为它基本上是一个 mongodb json 应用程序。在不了解域的情况下进行缓存。
    【解决方案2】:

    感谢@dimuha,我想通了。您还必须添加 time-zone 属性才能具有与升级前相同的行为

    spring:
      jackson:
        date-format: yyyy-MM-dd'T'HH:mm:ss.SSSXXX
        time-zone: Europe/Berlin
    

    这将输出 2014-01-01T23:01:01.010+01:00 iso 8601 日期。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-10
      • 2011-06-05
      • 2016-11-22
      相关资源
      最近更新 更多