这一篇文章足以让你对Java当中Date时间上的理解更上一层楼,本篇文章主要通过代码的形式来进行试验,彻彻底底搞明白日期传参,以及日期返回参数的格式相关问题,每一个步骤都会记得特别详细!
本篇文章主要针对以下三点,来进行代码试验:
- 不使用这两个注解,前端传参和后端返回参数 格式是什么样的?
- @DateTimeFormat究竟在什么时候用?
- @JsonFormat在什么时候用?
- 二者有什么区别?
目录
总结
如果想要看详细测试过程的,可以看下面的每一步骤,如果着急要结果的,看总结足矣!
@DateTimeFormat和@JsonFormat都是处理时间格式化问题的!
| 区别 | @DateTimeFormat | @JsonFormat |
|---|---|---|
| 使用方法 | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| 使用场景 | URL传参时,格式化前端传向后端日期类型的时间格式 | JSON传参,格式化前端传参和后端返回给前端的时间格式,传参可能不一定是json,但是一般接口向前端返回数据,基本上都是封装的统一返回格式,然后JSON返回。所以这个注解是一定要加的! |
| 使用地方 | 实体类日期字段上、或者字段的set方法上、或者方法入参上 | 实体类日期字段上、或者字段的set方法上、、或者方法入参上 |
| 来源 | org.springframework.format.annotation | com.fasterxml.jackson.annotation |
注意:
- 一旦使用
yyyy-MM-dd格式,如果传时分秒就会报错,或者是使用yyyy-MM-dd HH:mm:ss,如果传yyyy-MM-dd也会报错。 - 假如是springboot项目的话,使用这两个注解是不用导其他的依赖包的!
- 框架当中默认他会认为 前端传的是UTC时间,然后SpringMVC在接到参数的时候,会进行转换为本地区时间,向前端返回参数的时候会转换为UTC时间!
- 这两个注解可以选择在实体类的set方法当中使用,也可以在字段上使用,效果是一样的!
一、不使用注解
首先准备一张表:时间我使用的mysql是datetime类型,存储到数据库的格式是 yyyy-MM-dd HH:mm:ss
注意这个格式是mysql的
DATETIME字段类型格式,也就是我们使用mybatis也好,plus也罢,只要是日期类型,不管传的时候是什么格式,存到数据库之后都会变成这个格式!
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`create_date` datetime NULL DEFAULT NULL,
`upload_date` datetime NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
实体类:我用的是mybatis-plus框架做的试验,本篇mybatis-plus不是重点,重点要看的是日期类型格式
@TableName(value = "student")
@Data
@ToString(callSuper = true)
public class Student implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
@TableField(value = "name")
private String name;
@TableField(value = "create_date")
private Date createDate;
@TableField(value

本文深入探讨Java中日期处理的关键问题,包括前后端日期格式的差异、@DateTimeFormat和@JsonFormat注解的应用及区别,以及如何统一全局日期格式。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



