代码之家  ›  专栏  ›  技术社区  ›  codependent

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

  •  28
  • codependent  · 技术社区  · 7 年前

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

    这就是我得到的:

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

    TimeZone.getDefault() 这就是我得到的。

    我如何让Jackson使用实际时区序列化这些datetime值?GMT+2

    "someDate": "2017-09-11T09:53:27.000+0200"
    
    4 回复  |  直到 7 年前
        1
  •  34
  •   codependent    7 年前

    解决了注册Jackson2ObjectMapperBuilderCustomizer bean的问题:

    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization() {
        return jacksonObjectMapperBuilder -> 
            jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault());
    }
    
        2
  •  33
  •   Jaumzera    5 年前

    我发现自己也有同样的问题。

    spring.jackson.time-zone: America/Sao_Paulo
    

    在我的 application.properties 解决了问题。

    资料来源: https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html#JACKSON

        3
  •  31
  •   barbakini    7 年前

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

    @PostConstruct
    void started() {
        TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
    }
    
        4
  •  5
  •   Pramod H G    5 年前

    有两种解决方案:

    @JsonFormat(shape = JsonFormat.Shape.STRING, timezone = "Asia/Kolkata")
    private Date insertionTime;
    

    spring.jackson.time-zone: America/Sao_Paulo
    

    https://www.baeldung.com/spring-boot-formatting-json-dates