Spring项目Date类型处理
Spring项目Date类型处理
一、MySQL的五种日期和时间类型
MySQL中有多种表示日期和时间的数据类型。其中YEAR
表示年份,DATE
表示日期,TIME
表示时间,``DATETIME和
TIMESTAMP`表示日期和时间。它们的对比如下:
名称 | 字节数 | 取值范围 |
---|---|---|
YEAR | 1 | 1901——2155 |
DATE | 4 | 1000-01-01——9999-12-31 |
TIME | 3 | -838:59:59——838:59:59 |
DATETIME | 8 | 1000-01-01 00:00:00——9999-12-31 23:59:59 |
TIMESTAMP | 4 | 19700101080001——20380119111407 |
二、@JsonFormat时间格式化注解使用
Maven依赖:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.2</version> </dependency>
spring-boot-stater-web中已经封装了该包,可直接使用。
- 全局处理时间格式化
application.properties
中时间格式化修改为如下:
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring.jackson.time-zone=GMT+8
设置过后,配置文件设置后实体类中的所有Date类型会以yyyy-MM-dd HH:mm:ss
形式接收参数,由于与表中的其他Date字段要求不一致,在不一致的date类型属性上加@JsonFormat
注解用以覆盖application.properties
中的时间格式设置。
- 特殊处理时间格式化
//项目要求`time(HH:mm)` @JsonFormat(pattern = "HH:mm",timezone="GMT+8") private Date startTime; //项目要求`date(yyyy-MM-dd)` @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8") private Date completionDate; //项目要求`datetime(yyyy-MM-dd HH:mm)` @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone="GMT+8") private Date realWorkEndTime;
二、时间问题处理演示
以DailyWorkContent实体类为例,作为演示。
swagger中发起存入请求。
swagger中查询刚刚插入的信息