DateVO
/**
* Json时间格式化注解日期格式测试
*
* @author jxnuxyhsz
* @date 2021-11-19 12:06
*/
@Data
public class DateVO implements Serializable {
/**
* 不考虑其他框架支持, date 类型不能换成 String 类型
*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date date;
}
DateController
/**
* Json时间格式化注解日期格式测试
*
* @author jxnuxyhsz
* @date 2021-11-19 12:08
*/
@RestController
@RequestMapping("/date/")
public class DateController {
/**
* 在数据绑定, SpringMVC将字符串参数自动转换为各种基本类型, 不使用注解 @DateTimeFormat 会报类型转换异常
* @DateTimeFormat: spring-context包下, 按照指定格式接收前端传入时间, 默认转化为 CST 时区时间
* 接收后的时间格式为:Fri Nov 19 14:45:35 CST 2021
*
* @param vo vo
*/
@GetMapping("/input")
public void inputDate(DateVO vo) {
System.out.println("前端传入时间date1:" + vo.getDate());
}
/**
* 不加 jackson 注解 @JsonFormat, 返回给前端时间格式:"2021-11-19T07:00:27.692+00:00"
* 加上注解 @JsonFormat 会以指定格式返回给前端: "2021-11-19 15:01:57"
* jackson在序列化时间时是按照国际标准时间 GMT 进行格式化的,而在国内默认时区使用的是 CST 时区
*
* @return dateVO
*/
@GetMapping("/output")
public DateVO outputDate() {
DateVO dateVO = new DateVO();
dateVO.setDate(new Date());
return dateVO;
}
/**
* @DateTimeFormat 同样支持 @RequestBody里面的 date 属性
*
* @param vo vo
*/
@GetMapping("/requestBody")
public void requestBodyDate(@RequestBody DateVO vo) {
System.out.println("前端传入时间date:" + vo.getDate());
}
}
数据要是从数据库查出来, 请保证数据库连接串和数据库时区保持一致。