【问题标题】:How to make default time zone apply in Spring Boot Jackson Date serialization如何在 Spring Boot Jackson 日期序列化中应用默认时区
【发布时间】:2018-02-19 10:55:36
【问题描述】:

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

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

这就是我得到的:

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

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

如何让 Jackson 使用实际时区序列化这些日期时间值?格林威治标准时间+2

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

【问题讨论】:

    标签: spring spring-mvc spring-boot jackson jackson2


    【解决方案1】:

    有两种解决方案:

    1.添加 JSON 格式注解

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

    2。将杰克逊时区添加到属性(春季启动)

    spring.jackson.time-zone: America/Sao_Paulo
    

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

    【讨论】:

      【解决方案2】:

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

      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】:

        您可以通过将其添加到配置类来设置整个应用程序的时区:

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

        【讨论】:

        • 杰克逊不会接受。默认时区是正确的。我的解决方案解决了它。还是谢谢
        • @codependent 我在我的项目中也使用了杰克逊,这个配置解决了我的时区问题。无论如何,如果你解决了你的问题,没什么好争辩的 :) 如果有人可以使用它,我会留下我的帖子。编码愉快。
        • 是的,这会起作用,这取决于您在应用程序中设置默认时区的位置。这项工作很好,因为现在你的应用程序不会做任何时间调整。
        • 这将设置(反)序列化的“目标”时区,而JsonFormat(timezone = "xxx") 在解析和格式化时设置(反)序列化的输入时区。详情请见another question of mine
        【解决方案4】:

        解决了注册 Jackson2ObjectMapperBuilderCustomizer bean:

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

        【讨论】:

          猜你喜欢
          • 2019-04-03
          • 2018-03-21
          • 2011-12-02
          • 2017-11-16
          • 2019-01-31
          • 1970-01-01
          • 1970-01-01
          • 2018-01-31
          • 2018-01-24
          相关资源
          最近更新 更多