当前位置: 首页 > news >正文

随记:有关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/ShanghaiUTC)。

2.全局配置文件(yml)

spring:jackson:serialization:
#是否转换成时间戳 false为否,这个时候可以加上日期格式 write-dates-as-timestamps: falsedate-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 {@Beanpublic 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) 

http://www.lryc.cn/news/519481.html

相关文章:

  • IntelliJ IDEA 优化设置
  • jsp企业财务管理系统设计与实现
  • EscherNet运行笔记
  • Java中的反射机制及其应用场景
  • 信息科技伦理与道德3:智能决策
  • 青少年编程与数学 02-006 前端开发框架VUE 16课题、组件基础
  • 25/1/11 算法笔记 Yolov8物体识别
  • 水水水水水水
  • XS5037C一款应用于专业安防摄像机的图像信号处理芯片,支持MIPI和 DVP 接口,内置高性能ISP处理器,支持3D降噪和数字宽动态
  • 机器学习无处不在,AI顺势而为,创新未来
  • pandas处理json的相关操作
  • linux内存泄露定位过程(kmemleak和slab debug)
  • 2025年安卓面试复习总结
  • JS scrollIntoView 技巧揭秘:解锁网页流畅交互
  • 【Ubuntu 24.04】常见问题解决
  • 前端依赖安装指南
  • 灌区闸门自动化控制系统-精准渠道量测水-灌区现代化建设
  • ELK实战(最详细)
  • 《大型语言模型与强化学习的融合:探索问题的新解决方案与开源验证需求》
  • springboot 默认的 mysql 驱动版本
  • 10分钟快速了解OceanGPT(沧渊)
  • 蓝桥杯嵌入式速通(1)
  • Redis优化建议详解
  • ceph 存储 full 阈值调整
  • 后端技术选型 sa-token校验学习 下 结合项目学习 后端鉴权
  • Vue.js组件开发-实现组件切换效果的两种方法 条件渲染、动态组件
  • primitive 的 Appearance编写着色器材质
  • Seata搭建
  • 流浪猫流浪狗领养PHP网站源码
  • asammdf python 处理MF4文件库简介