spring boot+jpa+MySQL格式化返回数据中实体对象对应的日期格式

8 篇文章 0 订阅
7 篇文章 1 订阅

在controller中设置返回参数中的日期格式有三种:

1.在配置文件application.yml中设置整个项目关于日期的格式:

spring:

   jackson:

       time-zone: GMT+8

       date-format: yyyy-MM-dd

这样设置后,项目中所有关于日期的参数除非特定设置,都会按照yyyy-MM-dd格式返回

2.在controller中设置返回参数的格式:

public static String dateToString(Date date, String dateFrom){
    String time = null;
    try {
        SimpleDateFormat sdf = new SimpleDateFormat(dateFrom);
        time = sdf.format(date);
    }catch (Exception e){
        e.printStackTrace();
    }
    return time;
}

 

@PostMapping("/api/driver/list")
public Result driverList(Integer pageNo, Integer size, String agentName, String lineName, String driverName, String driverSfzh, String driverPhone){
    Map<String,Object> map = new HashMap<>();
    try {
        if(pageNo==null||size==null||pageNo==0||size==0){
            return Result.fail(903,"pageNo和size不能为空或者等于0");
        }

        Page<Driver> pager = driverService.getDao().findDriverPage(PageRequest.of(pageNo, size),agentName,lineName,driverName,driverSfzh,driverPhone);
        map.put("rows", pager.getTotalElements());//查询到的总记录数
        map.put("pages", pager.getTotalPages());//查询到的总页数
        map.put("page", pageNo);
        List<Map<String, Object>> datas = new ArrayList<>();
        pager.forEach(driver -> {
            Map<String, Object> item = new HashMap<>();
            item.put("id",driver.getId());
            
            item.put("zgzEndDate",driver.getZgzEndDate()!=null?dateToString(driver.getZgzEndDate(),"yyyy-MM-dd"):"");
            item.put("createTime",driver.getCreateTime()!=null?dateToString(driver.getCreateTime(),"yyyy-MM-dd HH:mm:ss"):"");
            datas.add(item);
        });

        map.put("datas",datas);

        return Result.ok(map);
    }catch (Exception e){
        e.printStackTrace();
        return Result.fail(901,"获取列表失败");
    }
}

首先让controller继承基础controller类,然后就可以用基础controller类中的dateToString方法格式化时间,然后在设置返回参数是日期时,调用dateToString方法格式化日期,这样返回的日期也是格式化后的。

3.在实体类中的日期属性上加上注解@JsonFormat(shape= JsonFormat.Shape.STRING,pattern="yyyy-MM-dd",timezone="GMT+8"),这样返回这个实体类对应的日期参数时也是格式化的,而且是yyyy-MM-dd格式的,不受方法一设置的影响。

import com.fasterxml.jackson.annotation.JsonFormat;
@DateTimeFormat(pattern = "yyyy-MM-dd")//设置接收日期参数时的格式
@JsonFormat(shape= JsonFormat.Shape.STRING,pattern="yyyy-MM-dd",timezone="GMT+8")//设置返回日期参数时的格式
@Column(name = "start_date",columnDefinition = " DATE COMMENT '票价生效开始时间'")
private Date startDate;

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iamlzjoco

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值