SpringBoot返回时间格式时默认时区错误问题 | 幸福的猪窝

SpringBoot返回时间格式时默认时区错误问题

目前一个项目中没有开启时区转换逻辑,但是却发现系统中的时间戳在前端显示异常。与实际的北京时间相差了8个小时。明显是转换成了UTC时间。开始怀疑是服务器时间问题,因为以前遇到过Docker中默认时区有错。所以检查了应用服务器和数据库服务器。发现均没有问题。于是跟踪代码发现从数据库读出是时间仍然正确,就是return后的输出出错。问题确定是在SpringBoot使用的jsckson转换时出的问题。查询后有如下两种处理方法:

方法一:统一配制

#时间戳统一转换

可以在apllication.property加入下面配置就可以

1
2
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8

如果使用的是树状配制文件application.yml的话

1
2
3
4
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8

方法二:单一配制

1
2
@JsonFormat(timezone = "GMT+8", pattern = "yyyyMMddHHmmss")
private Date createTime;