为什么我前端postMan输入的是2021-12-10
,而到了后端日期则显示为 2021-12-09 16:00:00呢
下面是有转换的代码
//把生日转换成Date格式
if (!"".equals(birth) && birth!=null){//birth为空会出错,因为有转换
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date birthDate = new Date();
try {
birthDate = dateFormat.parse(birth);
} catch (ParseException e) {
e.printStackTrace();
}
user.setBirth(birthDate);
}
在数据库连接URL后加上serverTimezone=Asia/Shanghai,然后由于你数据库的字段类型是datetime,所以就算你格式化了时间格式,也会自动把后面的时分秒给填充进去,正常应该都是00:00:00,但是由于你没设置时区,所以会少8H
代码贴出来,是不是你时间格式转换的时候带上的
对象的date型字段,要指定时区和格式;
如:加注解
@JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
private Date birth;
没有处理好时区问题,合理的做法是,时间的传输、计算、保存,都采用时间戳整数,只有界面展示才显示成日期时间格式
默认时区问题,看看配置文件有没有 spring.jackson.time-zone=GMT+8,没有加上就行了。
debug,跟踪一下就知道了
数据库中的birth字段数据类型修改为date类型,就可以了。
alter table table_name modify column birth date ;