Java Spring boot 日期和时间统一设置

方法一:配置文件修改

修改配置文件配置application.yml:

spring:# 配置日期格式化jackson:date-format: yyyy-MM-dd HH:mm:ss  #时间戳统一转换为指定格式time-zone: GMT+8  # 时区修改为东8区

application.properties配置方式

spring.jackson.date-format=yyyy-MM-dd HH:mm:ss #时间戳统一转换为指定格式
spring.jackson.time-zone=GMT+8 # 时区修改为东8区

【注意】这里需要修改时区time-zone:数据库默认时区是格林尼治的时间,如果不设置,会比实际时间少8个小时(北京时间)。

方法二:在javabean实体类上加注解 

@JsonFormat注解

@JsonFormat注解用于属性或方法上,将Date类型转换为我们需要的类型显示。

//在pattern上设置自己需要的格式
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date createTime;

@DateTimeFormat注解

在需要进行日期格式转换的Date属性上添加注解@DateTimeFormat(pattern = "需要转换的格式")

//注解将yyyy-MM-dd的形式转换为Date数据
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date birthday;

@Temporal注解

通过@Temporal注解,实现日期格式转换,它自带属性参数,比如:

@Entity
public class MyEntity {@Idprivate Long id;// 得到YYYY-MM-DD日期格式@Temporal(TemporalType.DATE)private Date myDate;// 得到HH:MM:SS时间格式@Temporal(TemporalType.TIME)private Date myTime;// 得到YYYY-MM-DD HH:MM:SS时间格式@Temporal(TemporalType.TIMESTAMP)private Date myTimestamp;// other fields and methods
}

 方法三:SpringBoot配置全局日期格式转换器

package com.mooding.common.share.config;import java.io.IOException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Date;import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.jackson.JsonComponent;import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.mooding.common.tools.utils.DateUtils;import lombok.SneakyThrows;/*** 类UserCombinedSerializer的实现描述**/
@JsonComponent
@ConditionalOnProperty(prefix = DateFormatConfig.PREFIX, name = "enabled", havingValue = "true", matchIfMissing = true)
public class DateFormatConfig {public static final String PREFIX = "mooding.localdateformat";/*** 中划线*/public static final String STRIKETHROUGH = "-";public static class LocalDateTimeJsonSerializer extends JsonSerializer<LocalDateTime> {@Overridepublic void serialize(LocalDateTime value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)throws IOException, JsonProcessingException {jsonGenerator.writeString(DateUtils.FMT.YYYY_MM_DD_HH_MM_SS.format(value));}}public static class LocalDateTimeJsonDeserializer extends JsonDeserializer<LocalDateTime> {@Overridepublic LocalDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)throws IOException, JsonProcessingException {return DateUtils.FMT.YYYY_MM_DD_HH_MM_SS.parseLocalDateTime(jsonParser.getText());}}public static class DateJsonSerializer extends JsonSerializer<Date> {@Overridepublic void serialize(Date value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)throws IOException, JsonProcessingException {SimpleDateFormat sdf = new SimpleDateFormat(DateUtils.FMT.YYYY_MM_DD_HH_MM_SS.getPattern());jsonGenerator.writeString(sdf.format(value));}}public static class DateJsonDeserializer extends JsonDeserializer<Date> {@SneakyThrows@Overridepublic Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)throws IOException, JsonProcessingException {String text = jsonParser.getText();if (text.contains(STRIKETHROUGH)) {SimpleDateFormat sdf = new SimpleDateFormat(DateUtils.FMT.YYYY_MM_DD_HH_MM_SS.getPattern());return sdf.parse(jsonParser.getText());} else {// 时间戳转换return new Date(Long.parseLong(text));}}}public static class LocalDateJsonSerializer extends JsonSerializer<LocalDate> {@Overridepublic void serialize(LocalDate value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)throws IOException, JsonProcessingException {jsonGenerator.writeString(DateUtils.FMT.YYYY_MM_DD.format(value));}}public static class LocalDateJsonDeserializer extends JsonDeserializer<LocalDate> {@Overridepublic LocalDate deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)throws IOException, JsonProcessingException {return DateUtils.FMT.YYYY_MM_DD.parseLocalDate(jsonParser.getText());}}public static class LocalTimeJsonSerializer extends JsonSerializer<LocalTime> {@Overridepublic void serialize(LocalTime value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)throws IOException, JsonProcessingException {jsonGenerator.writeString(DateUtils.FMT.HH_MM_SS.format(value));}}public static class LocalTimeJsonDeserializer extends JsonDeserializer<LocalTime> {@Overridepublic LocalTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)throws IOException, JsonProcessingException {return DateUtils.FMT.HH_MM_SS.parseLocalTime(jsonParser.getText());}}}

 

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

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

相关文章

两周掌握Vue3(一):安装、打包、目录结构

文章目录 一、安装1.安装node.js和npm&#xff08;windows&#xff09;2.安装vue&#xff0c;创建vue项目报错&#xff1a;XXX不是内部或外部命令 二、打包三、目录结构 nodejs版本&#xff1a;v20.10.0 npm版本&#xff1a;v10.2.3 一、安装 1.安装node.js和npm&#xff08;…

安科瑞电气防火限流式保护器与电动汽车充电桩的搭配使用——安科瑞 顾烊宇

摘要&#xff1a;随着电动汽车行业的不断发展&#xff0c;电动汽车充电设施的使用会变得越来越频繁和广泛。根据中汽协数据显示&#xff0c;2022年上半年&#xff0c;我国新能源汽车产销分别完成266.1万辆和260万辆,同比均增长1.2倍,市场渗透率达21.6%。因此&#xff0c;电动汽…

bool和BOOL的区别

简介 在编程中&#xff0c;bool&#xff08;以小写形式&#xff09;和BOOL&#xff08;以大写形式&#xff09;是两个不同的数据类型。bool是C和C#等语言中的基本数据类型&#xff0c;它表示一个布尔值&#xff0c;可以是true&#xff08;真&#xff09;或false&#xff08;假…

韩语发音干货,零基础韩语学习,柯桥韩语知识点之发音规律

01.连音化 当收音遇到以元音为首音的音节时&#xff0c;收音要和该元音相连发音。 예: 독일[도길] 밥을 [바블] 우산이[우사니] 읽어요[일거요] 02.送气 ㄱ/ㄷ/ㅂ/ㅈ遇到ㅎ,送气化读成ㅋ/ㅌ/ㅍ/ㅊ 예: 어떻게[어떠케] 좋다[조타] 많지만[만치만] 백화점[배콰…

Qt连接数据库(内含完整安装包)

遇到问题必须多思考 这里是最全的Qt连接数据库步骤 qt下载地址 链接&#xff1a;https://pan.baidu.com/s/1wdnTfyL9MQlNOCrSmIOxrQ?pwddgqi 提取码&#xff1a;dgqi --来自百度网盘超级会员V1的分享 数据库百度网盘地址 链接&#xff1a;https://pan.baidu.com/s/1orCczey…

GPT大模型在生物、地球、农业、气象、生态、环境科学可以应用?

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

云原生周刊:K8sGPT 加入 CNCF | 2024.1.8

开源项目推荐 VolSync VolSync 使用 rsync 或 rclone 在集群之间异步复制 Kubernetes 持久卷。它还支持通过 Restic 创建持久卷的备份。 KubeClarity KubeClarity 是一种用于检测和管理软件物料清单 (SBOM) 以及容器映像和文件系统漏洞的工具。它扫描运行时 K8s 集群和 CI/…

什么是VDA4913?

VDA 4913是VDA标准下发货通知&#xff08;Despatch Advice&#xff09;的报文类型代码&#xff0c;用于通知供应链中的相关各方有关订单发货的详细信息。这个标准化的业务单据帮助供应商、制造商和物流公司之间更加高效和准确地协作&#xff0c;以确保产品能够按计划准时交付&a…

【Scala】——函数式编程

1 面向对象编程和函数式编程 1.1 面向对象编程 解决问题&#xff0c;分解对象&#xff0c;行为&#xff0c;属性&#xff0c;然后通过对象的关系以及行为的调用来解决问题。 • 对象&#xff1a;用户 • 行为&#xff1a;登录、连接 JDBC、读取数据库 • 属性&#xff1a;用户…

Three.js 纹理贴图的实现

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 纹理贴图简介 当我们创建一个网格时&#xff0c;比如我们不起眼的立…

【java】项目部署liunx服务器的简单步骤

在Linux服务器上部署Java项目通常涉及到一系列步骤&#xff0c;下面是一个基本的部署流程&#xff0c;具体步骤可能会根据项目和服务器环境的不同而有所调整&#xff1a; 1. 准备工作&#xff1a; 1.1 安装Java环境&#xff1a; 在Linux服务器上安装Java运行环境&#xff0c;…

IP定位应对恶意IP攻击:保护网络安全的新策略

随着网络攻击的日益猖獗&#xff0c;恶意IP攻击成为网络安全领域的一大挑战。传统的安全防护手段在应对此类攻击时显得力不从心。近年来&#xff0c;通过IP定位这一新技术&#xff0c;为应对恶意IP攻击提供了新的解决思路。 IP定位技术通过分析网络流量中的IP地址&#xff0c;能…

如何创建VPC并配置安全组以保护您的阿里云服务器

将您的基础架构放在云上意味着您可以接触到全球的许多人。但是&#xff0c;这也意味着不怀好意的人可以访问您的服务。保护您的云网络非常重要。阿里云提供虚拟专用网络 &#xff08;VPC&#xff09;&#xff0c;这是一个安全隔离的私有云&#xff0c;将您的弹性计算服务 &…

用Python来制作一个微信聊天机器人

1. 效果展示 通过本地搭建一个flask服务器来接收信息&#xff0c;这里我简单使用展示&#xff0c;就没有对接收的信息进行处理了。 信息接收展示 发送信息展示 这里就直接使用python发送一个post请求即可&#xff0c;可以发送文字或者图片 代码展示 接收信息 #!/usr/bin/e…

[足式机器人]Part3 机构运动学与动力学分析与建模 Ch00-2(4) 质量刚体的在坐标系下运动

本文仅供学习使用&#xff0c;总结很多本现有讲述运动学或动力学书籍后的总结&#xff0c;从矢量的角度进行分析&#xff0c;方法比较传统&#xff0c;但更易理解&#xff0c;并且现有的看似抽象方法&#xff0c;两者本质上并无不同。 2024年底本人学位论文发表后方可摘抄 若有…

C++的一些书籍整理(个人学习)

UNIX环境高级编程&#xff08;第三版&#xff09; UNXI网络编程卷1 网络编程的笔记 收藏 我会了 一堆书 这个仓 数据库连接池原理介绍常用连接池介绍

《More Effective C++》学习

条款1&#xff1a;仔细区别 pointers 和 references 引用应该被初始化&#xff0c;指针可以不被初始化。不存在指向空值的引用这个事实意味着使用引用的代码效率比使用指针的要高。因为在使用引用之前不需要测试它的合法性。指针与引用的另一个重要的不同是指针可以被重新赋值…

mac环境桌面版docker错误修改daemon.json配置后,启动失败,一直卡在Docker Engine starting界面的解决方法

如下图&#xff1a;当桌面版docker的配置被错误的修改后&#xff0c;配置修改重启应用时&#xff0c;会一直卡在启动界面 此时需要找到mac下该桌面版docker的配置文件位置&#xff0c;手动修改恢复&#xff0c;然后重启应用。 daemon.json文件一般默认在隐藏文件夹下&#xff0…

SSL证书安装在哪?

安装SSL证书的具体步骤取决于你使用的服务器软件和操作系统。一般来说&#xff0c;SSL证书通常用于加密网站上的数据传输&#xff0c;因此安装过程主要涉及到Web服务器的配置。以下是一般步骤&#xff0c;但请注意这可能因你的具体环境而异。 永久免费SSL证书_永久免费https证…

一天一个设计模式---单例模式

概念 单例模式是一种创建型设计模式&#xff0c;其主要目的是确保一个类只有一个实例&#xff0c;并提供一个全局访问点。这意味着在应用程序中的任何地方&#xff0c;只能有一个实例存在&#xff0c;而不会创建多个相同类型的实例。 具体内容 单例模式通常包括以下几个要素…