java中的实体类时间格式化

目录

实体类时间格式化

java 实体类 时间格式化注解

实体类时间类型属性常用注解

注解一:DateTimeFormt(入参格式化)

注解二:JsonFormt(出参格式化)

注解三:JSONField(出参格式化)

实体类时间格式化 java 实体类 时间格式化注解 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date time;

pattern:时区

timezone:时区

@JsonFormat 默认是标准时区的时间,多出现少8小时的情况

使用时,按需求加上时区 北京时间 东八区 timezone=”GMT+8”

作用:后台的时间 格式化 发送到前台

@DateTimeFormat 接受前台的时间格式 传到后台的格式

实体类时间类型属性常用注解

假如有如下实体类:

import java.util.Date; public class DateVo { private Date date; public void setDate(Date date){ this.date = date; } public Date getDate(){ return date; } }

提供如下接口:

@RestController @RequestMapping("/date") public class DateController { @RequestMapping("test") public DateVo getDate(DateVo vo){ System.out.println(vo.getDate()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String date = sdf.format(vo.getDate()); System.out.println(date); DateVo dateVo = new DateVo(); dateVo.setDate(new Date()); return dateVo; } }

直接访问接口(参数vo: 2020-12-25 11:22:33),会抛出以下异常:

理由很简单:类型参数不匹配,传入参数vo的date为字符串类型,而要求时Date类型,这就需要入参格式化

注解一:DateTimeFormt(入参格式化)

注解@DateTimeFormt是由spring框架提供的,作用就是实现在入参格式化过程中对时间类型参数指定格式。

对上述实体类做如下修改:

public class DateVo { @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date date; public void setDate(Date date){ this.date = date; } public Date getDate(){ return date; } }

再次访问接口(参数vo: 2020-12-25 11:22:33),访问成功,在控制台会打印如下内容:

Fri Dec 25 11:22:33 CST 2020

2020-12-25 11:22:33 

同时向前端返回:

"2020-12-25T03:40:26.625+00:00"

对于这个返回内容可能不符合前端时间格式要求,需要对其进行出参格式化

注解二:JsonFormt(出参格式化)

注解@JsonFormt是由jackson提供的,由于spring框架中默认集成的json工具是jackson(国内使用更广泛的fastjson,其提供注解@JSONField),因此使用注解@JsonFormt不需要另外引入依赖,再次对实体类修改:

public class DateVo { @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @JsonFormat( pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8" ) private Date date; public void setDate(Date date){ this.date = date; } public Date getDate(){ return date; } }

继续访问接口(参数vo: 2020-12-25 11:22:33)返回:

2020-12-25 11:40:26

注意:在使用注解@JsonFormt时必须要指定时区,默认情况下为0时区,于北京时间(东8时区)相差8个小时

注解三:JSONField(出参格式化)

在国内使用更多是Alibaba 开源的fasejson,其同样提供了指定时间格式的注解。使用spring框架开发时需要注意的是spring框架中没有集成fastjson,因此需要在pom文件中引入其依赖,实体类修改如下:

public class DateVo { @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @JSONField(format="yyyy-MM-dd HH:mm:ss") private Date date; public void setDate(Date date){ this.date = date; } public Date getDate(){ return date; } }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持易知道(ezd.cc)。

推荐阅读