Spring Boot 配置引发 时区问题,接口返回日期莫名其妙-1天?
Spring Boot 配置引发 时区问题,接口返回日期莫名其妙-1天?
如果像这篇文章(https://www.cnblogs.com/zolmk/p/16452157.html) 一样配置 MessageConverter 会引发一个莫名其妙的时区问题,如:接口返回日期被-1天。
修改方式如下,我们需要显式的去设置时区,并且推荐使用下面的方式来注册 MessageConverter:
package com.fy.aspact;
import com.fasterxml.jackson.databind.module.SimpleModule;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.math.BigDecimal;
import java.util.List;
import java.util.TimeZone;
/**
* Jackson的全局配置
* @author zhuff 2022/7/2
**/
@Configuration
public class GlobalJacksonConfiguration implements WebMvcConfigurer {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
SimpleModule module = new SimpleModule();
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
module.addDeserializer(BigDecimal.class, new BigDecimalDeserializer());
module.addSerializer(BigDecimal.class,new BigDecimalSerializer());
converter.getObjectMapper().registerModule(module);
// 显式设置时区
converter.getObjectMapper().setTimeZone(TimeZone.getDefault());
// 此处必须添加到第一个,不然不起作用
converters.add(0, converter);
}
}