首页 文章

如何在Spring Boot Jackson Date序列化中应用默认时区

提问于
浏览
10

我已将Spring Boot应用程序配置为将日期序列化为ISO8601字符串:

spring:
  jackson:
    serialization:
      write-dates-as-timestamps: false

这就是我得到的:

"someDate": "2017-09-11T07:53:27.000+0000"

不过我的时区是欧洲/马德里 . 事实上,如果我打印 TimeZone.getDefault() 就是我得到的 .

如何让 Jackson 使用实际时区序列化这些日期时间值? GMT 2

"someDate": "2017-09-11T09:53:27.000+0200"

3 回答

  • 10

    您可以为整个应用程序设置时区,并将其添加到配置类:

    @PostConstruct
    void started() {
        TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
    }
    
  • 12

    我发现自己遇到了同样的问题 . 就我而言,我的应用只有一个时区,然后添加:

    spring.jackson.time-zone: America/Sao_Paulo

    在我 application.properties 解决了这个问题 .

  • 13

    解决了注册Jackson2ObjectMapperBuilderCustomizer bean的问题:

    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization() {
        return jacksonObjectMapperBuilder -> 
            jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault());
    }
    

相关问题