SpringBoot 请求和响应的时间字段配置
1. 请求配置
前端传yyyy-MM-dd HH:mm:ss
格式的时间字符串,后端用 java.util.Date 类型时间字段接收,不需要加注解就可以接收。
如果后端想使用java.time.LocalDateTime
类型字段来接收前端传递的yyyy-MM-dd HH:mm:ss
格式的时间字符串,可以选择直接配置注解:
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime updateTime;
@DateTimeFormat | @JsonFormat |
---|---|
org.springframework.format.annotation | com.fasterxml.jackson.annotation |
@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方法上、或者方法入参上 |
2. 响应配置
配置文件形式
Spring 转 json 的默认实现 jackson 中会根据时区去转换时间,而 jackson 默认为零时区,我们是东八区,相差8小时,所以我们需要统一指定时区,当然我们也可以在这里指定我们想要的时间格式。这种的一般是返回类中有java.util.Date
类型字段会用得到。
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
这种配置方式只对java.util.Date
类型的响应字段有效:
private Date pubTime;
字段注解形式
还可以直接在实体类字段上使用注解来配置时区和格式,这种配置方式对java.util.Date
和java.time.LocalDateTime
都有效:
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.time.LocalDateTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime updateTime;
转载自:https://juejin.cn/post/7352739150242856975