掘金 后端 ( ) • 2024-04-01 19:03

highlight: a11y-dark

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.Datejava.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;