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

SpringBoot Jackson 日期格式化统一配置

目录

1.在全局配置文件配置

2.通过JavaBean方式配置


1.在全局配置文件配置

spring:jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8

该配置方式仅支持 Date 类型的日期格式化,不支持LocalDate 及 LocalDateTime 的格式化。

2.通过JavaBean方式配置

com.fasterxml.jackson.databind.ObjectMapper

import cn.hutool.core.date.DatePattern;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.Module;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
import java.util.TimeZone;@Configuration
@AutoConfigureBefore(JacksonAutoConfiguration.class)
public class JacksonConfiguration {/*** Jackson对 LocalDate及LocalDateTime格式化的支持*/@BeanObjectMapper objectMapper() {return new ObjectMapper().setLocale(Locale.CHINA).setTimeZone(TimeZone.getTimeZone(ZoneId.systemDefault())).registerModule(javaTimeModule()).setDateFormat(new SimpleDateFormat(DatePattern.NORM_DATE_PATTERN)).configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).findAndRegisterModules();}private Module javaTimeModule() {JavaTimeModule module = new JavaTimeModule();module.addSerializer(new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)));module.addSerializer(new LocalTimeSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_TIME_PATTERN)));module.addSerializer(new LocalDateSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));module.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)));module.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));module.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_TIME_PATTERN)));return module;}
}

注:用到 cn.hutool.core.date.DatePattern#NORM_DATE_PATTERN,即日期格式化字符串:yyyy-MM-dd

另:注意注解 @AutoConfigureBefore(JacksonAutoConfiguration.class)

至此,无需再使用 繁琐的 注解 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 进行大量重复性的工作了。

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

相关文章:

  • 剑指 Offer 38. 字符串的排列 / LeetCode 47. 全排列 II(回溯法)
  • 【前端知识】React 基础巩固(四十三)——Effect Hook
  • 一百三十八、ClickHouse——使用clickhouse-backup备份ClickHouse库表
  • 【无标题】使用Debate Dynamics在知识图谱上进行推理(2020)7.31
  • windows下若依vue项目部署
  • 【目标检测】基于yolov5的水下垃圾检测(附代码和数据集,7684张图片)
  • P1734 最大约数和
  • Excel将单元格中的json本文格式化
  • Baumer工业相机堡盟工业相机如何通过BGAPI SDK获取相机当前实时帧率(C#)
  • XGBoost的基础思想与实现
  • 【Docker】Docker的服务更新与发现
  • 【Docker 学习笔记】Docker架构及三要素
  • matlab编程实践14、15
  • C++ ——STL容器【list】模拟实现
  • ubuntu 16.04 安装mujoco mujoco_py gym stable_baselines版本问题
  • 自然语言处理(NLP)技术
  • 如何将ubuntu LTS升级为Pro
  • 如何学习ARM嵌入式开发?
  • 二、使用运行自己的docker python容器环境
  • mac版窗口管理 Magnet for mac中文最新
  • Redis(五)—— Redis进阶部分
  • Go Ethereum源码学习笔记000
  • layui 设置选中时间为当天时间最大值23:59:59、laydate设置选中时间为当天时间最大值23:59:59
  • HTML+CSS+JavaScript:验证码60秒倒计时按钮
  • 互联网医院系统开发:打造便捷高效的医疗服务平台
  • 章节5:SQL注入之WAF绕过
  • iphone卡在恢复模式怎么办?修复办法分享!
  • uniApp禁止遮罩弹窗下的页面滚动
  • 【Huawei】WLAN实验(三层发现)
  • Windows 10 安装 PostgreSQL 12.x 报错 ‘psql‘ 不是内部或外部命令 由于找不到文件libintl-9.dll等问题