@JsonFormat与@DateTimeFormat的使用以及其区别

简介

1、JsonFormat来源于jackson,Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。Jackson所依赖的jar包较少,简单易用并且性能也要相对高些,并且Jackson社区相对比较活跃,更新速度也比较快。

2、DateTimeFormat是spring自带的处理框架,主要用于将时间格式化。

@DateTimeFormat

使用@DateTimeFormat注解可以将一个字符串转成一个Date对象,主要用于入参日期格式转换。

该注解可以用在实体类中Date类型的字段上也可以使用在方法中。

原因:前端传日期数据是以字符串的形式传入后台。后端用Date类型接受就会出错,加上此注解,后台可解析字符串的日期时间格式。

示例代码

@Data
@EqualsAndHashCode(callSuper = true)
public class QueryOrderDTO {
    /**
     * 开始日期
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date start;

    /**
     * 结束日期
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date end;
}
@GetMapping("/test")
public R test(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date start) {
    return new R();
}

@JsonFormat

当后台返回Date类型的日期格式数据给前端时,前台没办法解析。

需要做如下操作:在实体类字段打上如下注解

@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")

注意:timezone是为了解决时区问题,因为我们是东八区, 会相差8个小时。

示例代码

@Data
@EqualsAndHashCode(callSuper = true)
public class QueryOrderDTO {
    /**
     * 开始日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date start;

    /**
     * 结束日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date end;
}

注意:@JsonFormat与@DateTimeFormat两个注解可以同时使用

你可能感兴趣的:(后端笔记,java,spring,spring,boot)