Springboot返回给前端的日期变成时间戳问题处理

前言

最近学习Springboot+Mybatis-puls整合,遇到一个问题,数据库存储的DATETIME类型字段返回给前端是以时间戳返回,需要格式化为指定格式如yyyy-MM-dd HH:mm:ss格式

问题描述

首先创建了controller中的一个方法,根据前端传入的当前页码page​,分页大小pageSize​返回给前端分页数据,用了Mybatis-plus提供的方法:IService.page,R是自定义的通用返回结果类,后端响应的数据最终都会封装成此对象​

    @GetMapping("/page")
    public R page(Integer page,Integer pageSize){
       Page<CategoryEntity> categoryEntityPage =categoryService.page(new Page<>(page, pageSize),new QueryWrapper<CategoryEntity>().orderByAsc("sort"));
        return R.ok(categoryEntityPage);
    }

数据库关于时间的字段类型是DATETIME的
在这里插入图片描述
返回给前端的JSON数据中,关于时间的字段:createTimeupdateTime都是以原格式返回时间戳

{
	"code": 1,
	"data": {
		"records": [
			{
				"id": 1397844263642378242,
				"type": 1,
				"sort": 1,
				"createTime": 1622078218000,
				"updateTime": 1626351923000,
				"createUser": 1,
				"updateUser": 1
			},
			{
				"id": 1397844303408574465,
				"type": 1,
				"sort": 2,
				"createTime": 1622078227000,
				"updateTime": 1622615242000,
				"createUser": 1,
				"updateUser": 1
			}
		]
	}
}
解决方案

在对应的Entity类中,给对应属性添加@JsonFormat​注解

@JsonFormat​注解用于将Date日期格式化为指定格式的字符串。由于在序列化时间时是按照国际标准时间GMT进行格式化的,最后接受到的数据会早8个小时,所以应该添加timezone = "GMT+8"​属性将时区设置为于国内相同的CST时区,并设置当前时区为国区:locale = "zh"​,如果不设置,locale​默认会调用本机的时区。

	/**
	 * 创建时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
	private Date createTime;
	/**
	 * 更新时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
	private Date updateTime;

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值