随记:有关Springboot项目中的时间格式实现的几种方式
1.注解@JsonFormat @DateTimeFormat
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
public class Event {
// 序列化和反序列化时生效
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai",shape=)
private LocalDateTime eventDate;
// 仅在接收(反序列化)时生效 (从前端接收 JSON 数据转为 Java 对象)
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createdDate;
// Getters and Setters
}
[*] 两个注解的优先级
[*]处理 JSON 数据:优先使用 @JsonFormat。
[*]处理表单数据或 URL 参数:优先使用 @DateTimeFormat。
[*]如果需要处理 两种场景(JSON + 表单),可以同时使用 @JsonFormat 和 @DateTimeFormat,根据详细场景生效。
@JsonFormat 提供多个配置参数,你可以根据需要灵活调解:
[*]shape:定义序列化的格式(如时间戳或字符串)。
[*]常用值:
[*]JsonFormat.Shape.STRING:将日期序列化为字符串格式。
[*]JsonFormat.Shape.NUMBER:将日期序列化为时间戳格式。
[*]pattern:定义日期格式字符串(如 yyyy-MM-dd HH:mm:ss)。
[*]timezone:指定时区(如 Asia/Shanghai 或 UTC)。
2.全局配置文件(yml)
spring:
jackson:
serialization:
#是否转换成时间戳 false为否,这个时候可以加上日期格式
write-dates-as-timestamps: false
date-format: yyyy-MM-dd HH:mm:ss
#这是开启的
spring:
jackson:
serialization:
write-dates-as-timestamps: true
3.自定义配置文件
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.text.SimpleDateFormat;
@Configuration
public class JacksonConfig {
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
// 设置全局日期格式
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
// 注册 JavaTimeModule 以支持 Java 8 日期时间 API(如 LocalDateTime)
objectMapper.registerModule(new JavaTimeModule());
// 禁用时间戳序列化
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
return objectMapper;
}
}
详细的优先级就是
注解 (@JsonFormat > @DateTimeFormat) > 全局格式的(自定义类> 配置yaml)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]