几种时间格式化注解方式
1, @JsonFormat
介绍:
JsonFormat来源于jackson,Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象
作用:
1、 @JsonFormat不仅可以完成String转时间类型,也可以完成时间类型转string,可双向转换
2、@JsonFormat注解的作用就是完成json字符串到java对象的转换工作,与参数传递的方向无关。
3、当content-type为application/json时,优先使用@JsonFormat的pattern进行类型转换。而不能使用@DateTimeFormat进行类型转换。
import com.fasterxml.jackson.annotation.JsonFormat;
/**
** 后端返给前端数据时, 日期自动格式化,需要加上时区
*/
@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone=“GMT+8”)
private LocalDateTime testTime;
2、@DateTimeFormat
介绍:
DateTimeFormat是spring自带的处理框架,主要用于将时间格式化。
作用:
1、将String转换成Date,一般前台给后台传值时用
2、但确不能用于返回数据时把时间类型格式化成固定格式的string类型,单向转换
import org.springframework.format.annotation.DateTimeFormat;
/**
** 前端传递时间参数到后台时,String固定格式参数会自动封装成时间类型,不需要时区
*/
@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)
private LocalDateTime testTime;
3、 @JSONField(format=“yyyy-MM-dd HH:mm:ss”)
介绍:
JSONField来源于fastjson,是阿里巴巴的开源框架,主要进行JSON解析和序列化。
作用:json字符串转时间类型,时间类型也可以转json字符串,可用于前后传参、后端返回数据,可双向转换;
import com.alibaba.fastjson.annotation.JSONField;
/**
-
后端返给前端数据时, 日期自动格式化,不需要加上时区
*/
@JSONField(format=“yyyy-MM-dd HH:mm:ss”)
private LocalDateTime validUntilTime;
4、曾遇到的一个BUG
问题: 使用@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone=“GMT+8”)格式化之后返回的参数中间带T
思路:可能是@JsonFormat注解并未生效,目前暂时不知道原因
解决:加上@JSONField(format=“yyyy-MM-dd HH:mm:ss”)注解@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”, timezone =“GMT+8”)
@JSONField(format=“yyyy-MM-dd HH:mm:ss”)
private LocalDateTime validUntilTime;