本地采用Date生成时间正常,传入数据库,数据库时间正常,返回前端数据时间相差8小时解决方法
1、如果是spring boot项目加上如下再启动类或者切面上
@PostConstruct
void started() {
TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
}
2、在apprication.yml文件中配置数据库连接信息,并查看自己数据库时间是否设置对
url加上 &serverTimezone=GMT%2B8
mysql数据库查看时间是否是东八区
show variables like '%time_zone%'; //查询当前时区
如果没出现+8:00标识,说明数据库时间设置不对
set global time_zone='+8:00'; //在标准时区上加+8小时,即东8区时间
flush privileges; # 立即生效
3、修改spring的json构造器的时区
spring:
jackson:
joda-date-time-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
或者在返回的实体类上添加
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date dateTime;
如果上面的JsonFormat使用后还是相差8小时,用下面这个
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date dateTime;