在做项目时,数据库查到的时间都是格林尼治时间,从而导致前端收到的时间非常冗杂,所以修改时间格式尤为重要!
第一种方法
在实体类上注解@JsonFormat可以解决,都是一个一个的弄非常麻烦
下面是全局时间格式的配置:
首先修改yml
jackson:
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
default-property-inclusion: non_null # JSON处理时忽略非空字段
在spring后加上以上配置
在自己的WebMvcConfigurer实现类中加入以下方法即可
@Value("${spring.jackson.date-format}")
private String pattern;
/**
* 时间处理
* 使用此方法, 以下 spring-boot: jackson时间格式化 配置 将会失效
* spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
* spring.jackson.time-zone=GMT+8
* 原因: 会覆盖 @EnableAutoConfiguration 关于 WebMvcAutoConfiguration 的配置
* */
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
//localDateTime格式化
JavaTimeModule module = new JavaTimeModule();
LocalDateTimeDeserializer dateTimeDeserializer = new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(pattern));
LocalDateTimeSerializer dateTimeSerializer = new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(pattern));
module.addDeserializer(LocalDateTime.class, dateTimeDeserializer);
module.addSerializer(LocalDateTime.class, dateTimeSerializer);
ObjectMapper objectMapper = Jackson2ObjectMapperBuilder.json().modules(module)
.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS).build();
//date时间格式化
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
objectMapper.setDateFormat(new SimpleDateFormat(pattern));
// 设置格式化内容
converter.setObjectMapper(objectMapper);
converters.add(0, converter);
}
随便测试查询带返回时间的接口可以看到所有时间都变为了统一的格式