在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; |

博客介绍了在Java的controller中设置返回参数日期格式的三种方法。一是在配置文件application.yml中设置项目日期格式;二是让controller继承基础controller类,用dateToString方法格式化时间;三是在实体类日期属性上加@JsonFormat注解,不受第一种方法设置影响。
3552





