日付をISO8601文字列としてシリアル化するようにSpring Bootアプリケーションを構成しました。
_spring:
jackson:
serialization:
write-dates-as-timestamps: false
_
これは私が得ているものです:
_"someDate": "2017-09-11T07:53:27.000+0000"
_
ただし、私のタイムゾーンはヨーロッパ/マドリードです。実際、TimeZone.getDefault()
を出力すると、それが得られます。
実際のタイムゾーンを使用してこれらの日時値をジャクソンにシリアル化するにはどうすればよいですか? GMT + 2
_"someDate": "2017-09-11T09:53:27.000+0200"
_
Jackson2ObjectMapperBuilderCustomizer Beanの登録を解決しました:
@Bean
public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization() {
return jacksonObjectMapperBuilder ->
jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault());
}
これを設定クラスに追加して、アプリケーション全体のタイムゾーンを設定できます。
@PostConstruct
void started() {
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}
私は同じ問題を抱えていました。私の場合、アプリのタイムゾーンは1つだけで、次のように追加します:
spring.jackson.time-zone: America/Sao_Paulo
私のapplication.properties
問題を解決しました。