问题:
后端日期数据格式正常,前端接收到的数据为时间戳
后端数据库查询结果
显示时间格式为: yyyy-MM-dd HH:mm:ss
==> Preparing: SELECT COUNT(*) AS total FROM sys_role WHERE is_deleted = 0
==> Parameters:
<== Columns: total
<== Row: 3
<== Total: 1
==> Preparing: SELECT id,role_name,role_code,description,create_time,update_time,is_deleted FROM sys_role WHERE is_deleted=0 LIMIT ?
==> Parameters: 10(Long)
<== Columns: id, role_name, role_code, description, create_time, update_time, is_deleted
<== Row: 1, 系统管理员, SYSTEM, 系统管理员, 2021-05-31 18:09:18, 2022-06-08 09:21:10, 0
<== Row: 2, 普通管理员, COMMON, 普通管理员, 2021-06-01 08:38:40, 2022-02-24 10:42:46, 0
<== Row: 8, 用户管理员, yhgly, null, 2022-06-08 17:39:04, 2022-06-08 17:39:04, 0
<== Total: 3
前端页面展示效果
发现 创建时间 的格式变为时间戳
前端日志输出
console.log("时间...")
console.log(response.data.records[1].createTime)
发现传递过来的数据就是时间戳格式
解决办法
在实体类对应的日期变量上面加上注解: @JsonFormat(pattern:“hh-MM-dd”)
@JsonFormat(pattern = "yyy-MM-dd")
@TableField("create_time")
private Date createTime;
@JsonFormat(pattern = "yyy-MM-dd")
@TableField("update_time")
private Date updateTime;
最终效果
原理
@JsonFormat(pattern = “yyy-MM-dd”)是一个用于定义日期格式的注解,它可以应用在Java类的属性上或者方法上。
当它应用在属性上时,它的作用是指定该属性在序列化为JSON字符串时的日期格式。例如,如果一个属性的类型是Date,并且使用了@JsonFormat(pattern = “yyy-MM-dd”)注解,那么在将该属性序列化为JSON字符串时,日期会按照"yyy-MM-dd"的格式进行格式化。
当它应用在方法上时,它的作用是指定该方法返回值在序列化为JSON字符串时的日期格式。例如,如果一个方法返回类型是Date,并且使用了@JsonFormat(pattern = “yyy-MM-dd”)注解,那么在将该方法返回值序列化为JSON字符串时,日期会按照"yyy-MM-dd"的格式进行格式化。