项目中对日期进行格式化的方法

news2024/12/26 0:07:32

方式一:在属性上添加注解进行格式化

需要引入jackson包

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.2</version>
</dependency>

在属性上添加@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”)注解

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;

优点:简单
缺点:每一个属性都需要添加注解

方式二:在WebMvcConfiguration中扩展Spring MVC的消息转换器,统一对日期类型进行格式化处理

引入jackson包

<dependency>
     <groupId>com.fasterxml.jackson.core</groupId>
     <artifactId>jackson-databind</artifactId>
     <version>2.9.2</version>
</dependency>

创建一个对象转换器工具类:


/**
 * 对象映射器:基于jackson将Java对象转为json,或者将json转为Java对象
 * 将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象]
 * 从Java对象生成JSON的过程称为 [序列化Java对象到JSON]
 */
public class JacksonObjectMapper extends ObjectMapper {

    public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
    //public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
    public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm";
    public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";

    public JacksonObjectMapper() {
        super();
        //收到未知属性时不报异常
        this.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);

        //反序列化时,属性不存在的兼容处理
        this.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

        SimpleModule simpleModule = new SimpleModule()
                .addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
                .addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
                .addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)))
                .addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
                .addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
                .addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)));

        //注册功能模块 例如,可以添加自定义序列化器和反序列化器
        this.registerModule(simpleModule);
    }
}

在WebMvcConfiguration.java中重写extendMessageConverters方法来扩展Spring MVC框架的消息转换器,对返回前端的数据进行统一的处理:

 /**
     * 扩展Spring MVC框架的消息转换器,对返回前端的数据进行统一的处理
     *
     * @param converters
     */
    protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        log.info("扩展消息转换器");
        //创建一个消息转换器对象
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        //需要为消息转换器设置一个对象转换器,对象转换器可以将Java对象序列化为json数据
        converter.setObjectMapper(new JacksonObjectMapper());
        //将自己的消息转换器加入到容器首位,优先使用,不加入到首位的话,默认不会使用
        converters.add(0, converter);
    }

最终效果,日期被格式化为指定格式:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1359926.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Fiddler 到底能做什么?

Fiddler是检查 Http 流量的最流行的工具之一。此工具可帮助我们非常轻松地测试 REST API / SOAP Web 请求。 题主的问题&#xff1a;Fiddler 到底能做什么。仔细思考&#xff0c;其实有两层意思&#xff1a; 第一层&#xff1a;Fiddler工具的应用范围 第二层&#xff1a;Fiddle…

垂直领域大模型——文档图像大模型的思考与探索

〇、前言 12月1日&#xff0c;2023中国图象图形学学会青年科学家会议在广州召开。超1400名研究人员齐聚一堂&#xff0c;进行学术交流与研讨&#xff0c;共同探索促进图象图形领域“产学研”交流合作。 大会上&#xff0c;合合信息智能技术平台事业部副总经理、高级工程师丁凯博…

C++基础语法——数组、函数、指针和结构体

本专栏记录C学习过程包括C基础以及数据结构和算法&#xff0c;其中第一部分计划时间一个月&#xff0c;主要跟着黑马视频教程&#xff0c;学习路线如下&#xff0c;不定时更新&#xff0c;欢迎关注。 当前章节处于&#xff1a; >第1阶段-C基础入门 ---------第2阶段实战-通讯…

[C语言]程序设计(四)

大家好&#xff0c;这里是争做图书馆扫地僧的小白。非常感谢各位的支持&#xff0c;也期待着您的关注。 目前博主有着C语言、C、linux以及数据结构的专栏&#xff0c;内容正在逐步的更新。 希望对各位朋友有所帮助同时也期望可以得到各位的支持&#xff0c;有任何问题欢迎私信与…

计算机Java项目|SpringBoot+Vue实现的在线考试系统

项目编号&#xff1a;L-BS-KS-02 一&#xff0c;环境介绍 语言环境&#xff1a;Java: jdk1.8 数据库&#xff1a;Mysql: mysql5.7 应用服务器&#xff1a;Tomcat: tomcat8.5.31 开发工具&#xff1a;IDEA或eclipse 二&#xff0c;项目简介 基于SpringBootVue的在线考试…

面试算法97:子序列的数目

题目 输入字符串S和T&#xff0c;请计算字符串S中有多少个子序列等于字符串T。例如&#xff0c;在字符串"appplep"中&#xff0c;有3个子序列等于字符串"apple" 分析 为了解决这个问题&#xff0c;每步从字符串S中取出一个字符判断它是否和字符串T中的…

Pytorch的GPU版本安装,在安装anaconda的前提下安装pytorch

本文基于conda安装GPU版本的PyTorch 一、CUDA 1.下载CUDA 点击下载 找到对应的版本进行下载 &#xff08;1&#xff09;打开命令提示符查看自己的版本&#xff0c;输入 nvidia-smi 根据自己的版本进行下载 &#xff08;2&#xff09;点击适合自己的版本进行下载 &#…

开发实践 | MySQL的Explain工具

&#x1f4eb; 作者简介&#xff1a;「子非我鱼」&#xff0c;专注于研究全栈 &#x1f525; 三连支持&#xff1a;欢迎 ❤️关注、&#x1f44d;点赞、&#x1f449;收藏三连&#xff0c;支持一下博主~ 文章目录 引言1&#xff0c;Explain工具介绍2&#xff0c;基本语法3&…

数字逻辑电路入门:从晶体管到逻辑门

数字逻辑电路入门&#xff1a;从晶体管到逻辑门 这是数字逻辑电路中最基础的部分。但是并非那么容易理解。 1、晶体管 mosfet&#xff1a;场效应晶体管&#xff0c;是电压控制元件。cmos&#xff1a;是指由mos管构成的门级电路通常是互补的。BJT&#xff1a;一种三极管&…

【LeetCode每日一题】2397. 被列覆盖的最多行数

2024-1-4 文章目录 [2397. 被列覆盖的最多行数](https://leetcode.cn/problems/maximum-rows-covered-by-columns/)方法&#xff1a;二进制枚举 2397. 被列覆盖的最多行数 方法&#xff1a;二进制枚举 1.获取矩阵的行数和列数&#xff0c;并创建一个大小为m的一维数组rows来保…

xv6源码分析--内存管理

大家好&#xff0c;我叫徐锦桐&#xff0c;个人博客地址为www.xujintong.com&#xff0c;github地址为https://github.com/jintongxu。平时记录一下学习计算机过程中获取的知识&#xff0c;还有日常折腾的经验&#xff0c;欢迎大家访问。 一、前言 xv6的内存管理在kernel/kall…

知虾大数据Shopee平台有:为什么它对用户和卖家都如此重要?

Shopee是一家知名的电子商务平台&#xff0c;为了提供更好的用户体验和实现可持续发展&#xff0c;他们利用大数据分析用户行为、交易信息和市场趋势等数据。这些数据被称为知虾大数据&#xff08;Shopee Big Data&#xff09;&#xff0c;它对于Shopee平台和卖家来说都具有重要…

JDBC数据库访问——数据库操作

与指定的数据库建立连接后&#xff0c;就可以使用JDBC提供的API对数据库进行操作&#xff0c;包括查询、新增、更新、删除等。 1.查询操作 和数据库建立连接后&#xff0c;对数据库表进行查询操作的步骤如下&#xff1a; ①创建statement对象 由已创建的Connection对象con调…

贪心算法:活动选择问题以及贪心选择性质证明

什么时候使用贪婪算法? – 贪心选择特性: 全局的最优解可以通过局部的最优&#xff08;贪婪&#xff09; 选择得到. • 动态规划需要检查子问题的解。 – 最优子结构: 问题的最优解包含了其子问题的最优解. • 例如, 如果 A 是S的最优解, 那么 A A - {1} 是 的最优解. …

UE4.27_PIE/SIE

UE4.27_PIE/SIE 1. 疑问&#xff1a; 不明白什么是PIE/SIE? 不知道快捷键&#xff1f; 2. PIE/SIE: play in editor/simulate in editor 3. 快捷键&#xff1a; F8: 运行时possess&eject切换 4. 运行操作效果&#xff1a; PIE&SIE

WWDC2022 大会 : | WatchOS 9升级,跨平台智能家居系统Matter

目录 WatchOS 9升级 全新表盘 体能训练 APP 睡眠追踪 心脏健康 药物 APP 使用方式 跨平台智能家居系统Matter 6月7日凌晨&#xff0c;苹果WWDC22准时与大家见面。本次发布会带来了iOS 16、watchOS 9、M2芯片以及新的MacBook等软硬件新品&#xff0c;同时也对现有的软件…

Js的$如同 sed的 java的$0 指代matcher匹配到的内容的符号

Js的$&如同 sed的& java的$0 $& 可用于Js,Vscode,RJTextEd,editplus,notepad, 在 Vscode,RJTextEd,editplus,notepad,等的替换中, 启用正则, 就能使 $&生效, 比如 ($&)表示给匹配到的内容加上括号 $& 可用于Js的String的replace(和replaceAll( 的第二…

Postman 并发测试入门指南:如何模拟用户并发请求?

背景介绍 最近&#xff0c;我们发起了一个在线图书管理系统的项目。我负责的一个关键模块包括三个主要后台接口&#xff1a; 实现对books数据的检索。实施对likes数据的获取。通过collections端点访问数据。 应对高流量的挑战 在设计并部署接口时&#xff0c;我们不可避免地…

springboot项目 java -jar xxx.jar 没有主清单属性解决方法

1.在pom文件中添加如下 <plugins><!--解决SpringBoot打包成jar后运行提示没有主清单属性--><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><fork…

Visual Studio 2022进行文件差异比较

前言 Visual Studio 2022在版本17.7.4中发布在解决方案资源管理器中比较文件的功能&#xff0c;通过使用此功能&#xff0c;可以轻松地查看两个文件之间的差异&#xff0c;包括添加、删除和修改的代码行。可以逐行查看差异&#xff0c;并根据需要手动调整和编辑文件内容以进行…