关于前后端日期转换的问题

@DateTimeFormat 和 @JsonFormat 注解详解 这一篇文章足以让你对Java当中Date时间上的理解更上一层楼,本篇文章主要通过代码的形式来进行试验,彻彻底底搞明白日期传参,以及日期返回参数的格式相关问题,每一个步骤都会记得特别详细!@DateTimeFormat究竟在什么时候用?@JsonFormat在什么时候用?二者有什么区别?同时也会重点围绕这几个问题讲解! 阅读详情

@JsonFormat与@DateTimeFormat注解的使用

背景:从数据库获取时间传到前端进行展示的时候,我们有时候可能无法得到一个满意的时间格式的时间日期,在数据库中显示的是正确的时间格式,获取出来却变成了很丑的时间戳,@JsonFormat注解很好的解决了这个问题,我们通过使用@JsonFormat可以很好的解决:后台到前台时间格式保持一致的问题,其次,另一个问题是,我们在使用WEB服务的时,可能会需要用到,传入时间给后台,比如注册新用户需要填入出生日期等,这个时候前台传递给后台的时间格式同样是不一致的,而我们的与之对应的便有了另一个注解,@DataTimeFormat便很好的解决了这个问题,接下来记录一下具体的@JsonFormat与DateTimeFormat的使用过程。

声明:关于@JsonFormat的使用,一定要导入正确完整的包。

1.注解@JsonFormat

    1.使用maven引入@JsonFormat所需要的jar包,我贴一下我这里的pom文件的依赖

<!--JsonFormat-->
  
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.8.8</version>
        </dependency>
  
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.8.8</version>
        </dependency>
  
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
        </dependency>

2.在你需要查询出来的时间的数据库字段对应的实体类的属性上添加@JsonFormat

import java.util.Date;
  
import com.fasterxml.jackson.annotation.JsonFormat;
  
public class TestClass {
  
    //设置时区为上海时区,时间格式自己据需求定。
    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
    private Date testTime;
  
     
    public Date gettestTime() {
        return testTime;
    }
  
    public void settestTime(Date testTimee) {
        this.testTime= testTime;
    }
}

这里解释一下:@JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")

   pattern:是你需要转换的时间日期的格式

   timezone:是时间设置为东八区,避免时间在转换中有误差

  提示:@JsonFormat注解可以在属性的上方,同样可以在属性对应的get方法上,两种方式没有区别

3.完成上面两步之后,我们用对应的实体类来接收数据库查询出来的结果时就完成了时间格式的转换,再返回给前端时就是一个符合我们设置的时间格式了

2.注解@DateTimeFormat

1.@DateTimeFormat的使用和@jsonFormat差不多,首先需要引入是spring还有jodatime,spring我就不贴了

<!-- joda-time -->
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.3</version>
        </dependency>

2.在controller层我们使用spring mvc 表单自动封装映射对象时,我们在对应的接收前台数据的对象的属性上加@DateTimeFormat

@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date symstarttime;
 
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date symendtime;

我这里就只贴这两个属性了,这里我两个注解都同时使用了,因为我既需要取数据到前台,也需要前台数据传到后台,都需要进行时间格式的转换,可以同时使用

3.通过上面两个步骤之后,我们就可以获取一个符合自定义格式的时间格式存储到数据库了

总结: 

  注解@JsonFormat主要是后台到前台的时间格式的转换

  注解@DataFormAT主要是前后到后台的时间格式的转换

转载:https://www.cnblogs.com/mracale/p/9828346.html

详解@JsonFormat和@DateTimeFormat注解:处理日期格式化的利器 在Java开发中,尤其是Spring和Spring Boot项目中,日期时间类型(如Date、LocalDateTime等)的格式化问题经常困扰开发者。例如,前端传递的日期字符串如何转换为后端对象?后端返回的日期对象如何按指定格式序列化?这时候,@JsonFormat和@DateTimeFormat两个注解可以轻松解决这些问题。本文将通过代码示例详细讲解它们的用法和区别。 阅读详情

相关推荐

@JsonFormat注解和时区问题

在程序开发中会因为时区的不同,出现时间类型的数据出现问题 文章目录

wh柒八九的博客 3万+

@DateTimeFormat和@JsonFormat介绍

@DateTimeFormat和@JsonFormat介绍

qq_52030824的博客 2万+

LabVIEW新手必看:5分钟搞定S7-1200 OPC通信(附完整配置截图)

本文详细介绍了LabVIEW与西门子S7-1200 PLC通过OPC通信实现工业监控系统的完整配置流程。从环境准备、PLC数据块配置到OPC Server高级设置,逐步指导新手快速建立稳定通信链路,并分享工业级应用的优化技巧和异常处理方案,帮助用户提升自动化系统集成效率。

rl6adventurer的博客 641

@DateTimeFormat与@JsonFormat详解

前后端进行时间类型的传值经常会遇到各种问题,并且对于java中的Date类也有util包与sql包的区别,在本文中我将会围绕实际业务进行展开解释。 一、时间传值 前端时间控件,一般情况下直接会传一个yyyy-MM-dd的日期字符串到后台。这个时候如果我们直接用java.util.Date类型就无法正确接收到。或者我们从数据库里查到DateTime类型并且用java的Date类型接收并返回给前台...

imVainiycos的博客 5万+

activiti(六):activiti7的数据表和字段的解释

介绍activiti7的数据表和各表字段的含义,对于学习activiti7工作流引擎的运行过程很有帮助!

no problem的博客 1万+

【QT+VS】如何在现有VS项目中添加Qt界面?【全网最详细】

VS项目有了,就缺个QT界面,怎么办呢?这篇文章帮你一键搞定!

深耕CV 4990

前后端中的日期格式转换问题

Date数据序列化为JSON发往前端时,按以下格式序列化。Java对象中的日期的序列化为JSON时会用到。JSON日期的反序列化为java对象时。从后端发送的日期转为想要的格式给前端。从前端接收到的日期转为想要的格式。

随便写写 493

使用MATLAB实现PAC2002轮胎模型的TIR文件解析和模型计算详解

PAC2002轮胎模型是由荷兰TNO公司开发的一种半经验的轮胎模型,用于描述轮胎在不同工况下的力学特性。该模型基于一系列物理和经验参数,通过复杂的数学表达式来模拟轮胎的力学行为,包括纵向力、侧向力、回正力矩等。

qq_38334677的博客 2430

解决前后端LocalDateTime日期格式转换问题

场景: 后台通过实体接收参数,使用POST,前端通过Json的形式进行交互。 前端传 "2020-10-18 11:20:23" 这种格式的时间时,后端无法接收,报解析异常。 解决: @JsonFormat 后端的 LocalDataTime 只能解析类似【 2020-01-01T10:00:00】 这样的格式。 只要在后端的实体类,相应的属性上加如下注解,即可解决。 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "G..

阿鹏的博客 8666

C# WPF上位机实战:从零开发空压机监控系统(含实时监控+故障预警+数据追溯)

在工业生产场景中,空压机作为核心动力设备,常面临这些痛点:压力/温度异常导致停机、油耗超标未及时发现、设备故障追溯无数据支撑、人工巡检效率低且易遗漏。而基于C# WPF开发的空压机监控系统,能通过实时采集设备运行参数、智能分析运行状态、联动故障预警,实现“状态监控-异常告警-数据追溯-远程管控”全流程自动化,完美解决传统管理模式的弊端。今天就带大家落地这套空压机监控系统,基于C# + .NET 8 + WPF + Modbus TCP/RTU协议,整合压力、温度、油耗、运行时长等核心参数监控,搭配WPF的数

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1107

基于STM32L4XX、HAL库的Ra-01SC-P LoRa模块驱动程序设计

0x22) { // SX1276/SX1278版本号。// 发射功率(2-20)// 工作频率(Hz)// 编码率(5-8)

zhusl6688的博客 426

vue elementUI 前后端日期转换问题

前端: //将当前时间解析为number类型 let currentTime= parseInt(new Date().getTime()); 后端:调用setXxx保存 private Date borrowDate =new Date(); @JsonFormat(pattern = "yyyy-mm-dd HH:mm:ss",timezone = "GMT+8") public Date getBorrowDate() { return borrowDate; .

qq_34558909的博客 2404

芯片测试:WAT、CP、FT

最近部门来了一个日本回来的同事,虽然他尽量用非常Poor的中文给我解释一些东西,其中还夹杂着一些英文让我很受挫,于是最近来学一下WAT中的常用的单词含义。直接去查缩写、查单词很难去记住,要把具体的东西放在具体的场景,引发知识的连接才会在脑子里留下一定的映像。感兴趣的一起来学习一下这篇不错的文章吧。注释是我查询记录,如有不妥,欢迎指出修正。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 5092

java前后端传递日期类型不一致的转换问题

本来最开始是用SimpleDateFormat进行转换的,但是转换之后的是字符串类型的,与date类型对不上,所以就上网查了一下,发现可以用@DateTimeFormat和@JsonFormat这俩个注解来进行解析和转换。经过debug发现前端传输的时候是正常的,但是到后端接收的时候就少了一天,太神奇了。今天在做学生信息的展示时发现展示的日期和数据库中日期不同。修改完成后应该也是12-10才对,但是显示的却是。而且数据库中插入的也是12-09。

m0_57948069的博客 693

【OpenClaw从入门到精通】第10篇:OpenClaw生产环境部署全攻略:性能优化+安全加固+监控运维(2026实测版)

本文聚焦OpenClaw从测试环境走向生产环境的核心痛点,围绕“性能优化、安全加固、监控运维”三大维度展开实操讲解。先明确生产环境硬件/系统选型标准,再通过硬件层资源管控、模型调度策略、缓存优化等手段提升响应速度(实测响应效率提升50%+);接着从网络、权限、数据三层构建安全防护体系,集成火山引擎安全方案拦截高危操作;最后落地TenacitOS可视化监控与Prometheus告警体系,配套完整故障排查清单和虚拟实战案例。全文所有配置、代码均经实测验证,兼顾新手入门实操性和进阶读者的生产级部署需求。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 3442

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

解决element前后端LocalDateTime日期格式转换问题

文章目录场景:解决办法 场景: 后台通过实体接收参数,使用POST,前端通过Json的形式进行交互。 前端传 “2020-1加粗样式0-18 11:20:23” 这种格式的时间时,后端无法接收,报解析异常。 解决办法 @JsonFormat 后端的 LocalDataTime 只能解析类似【 2020-01-01T10:00:00】 这样的格式。 只要在后端的实体类,相应的属性上加如下注解,即可解决。 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", ti

weixin_45123696的博客 1899

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【笔记】前后端日期出入参格式不一致问题分析与解决办法-格式转换配置

前端VUE -> 后端基于SpringBoot的http服务 -> 后端thrift服务 -> 后端mysql。VUE前端定义的业务类 <–> json <–> http服务定义的业务类。–>这是前端要处理的入参格式问题,因为参数是json串,无法再单独配置格式。–>这是后端要处理的出参格式问题,因为前端没必要再做一次格式转换。前端不做处理,直接使用后端返回的值,所以最终展示效果的关键在于。http服务定义的业务类 <–> thrift服务定义的业务类。application.yml配置。

kyujyu的博客 526

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

JS 转换日期UTC类型

前台取到的日期类型为UTC,“yyyy-MM-dd ‘T’ HH:mm:ss.SSS”,后台接收报错如下: org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.Date` from Stri...

Maggieq8324的博客 2081

前后端传输Date类型数据时格式化日期

问题一: 后台在返回json格式的Date类型数据时,直接通过@ResponseBody返回出去的是一个长整型时间戳: 解决方法: @JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone = “GMT+8”) 它的作用是,出参时,自动把Date型对象数据转化成格式化后的字符串输出: yyyy-MM-dd HH:mm:ss 案例:...

dxyzhbb的博客 4万+

birthday日期类型转化

标题birthday日期类型转化 体类上加@DatetimeFormat与@JsonFormat注解 @DatetimeFormat:将前台日期字符串转换成Date格式 @DateTimeFormat(pattern=“yyyy-MM-dd”) @JsonFormat:将服务器端Date日期转换成指定字符串格式 @JsonFormat(pattern=“yyyy-MM-dd”,timezone=“GMT+8”) 两个需要同时加,否则会有时区的问题 方式二: 在applicition.properties中添

fanqingdi092298的博客 1200

JS时间戳转换日期格式,附JS脚本详细用法

  今晚做分页的时候,遇到后台往前台传日期类型,会出现这种情况,好像是微软为了解决操作系统兼容性问题,将日期全部转换为从1970年1月1日至现在时间的时间戳。为了解决这个问题,特意百度了一番,整理了处理日期类型的js脚本,以及提取时间戳的正则表达式。 如图: 正则表达式提取时间戳: 1 (eval(data[key].date.replace(/\/Date\((\d+)\)\//...

weixin_30360497的博客 272

SSM日期类型的转换

SSM日期类型的转换: 数据库中的日期格式是datetime,但是后台读取日期的时候, 得到的却是时间戳.针对这个情况,我们可以使用@JsonFormat来解决这个问题. @JsonFormat的使用(后端从数据库中获取时间给前段显示) 我们可以在对象的属性或者是getter方法上进行注解: @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", time...

lelly52800的博客 1118

springMVC-日期转换问题

一、使用注解方式解决前端日期在后台转换报错的问题。 1、新建一个日期转换类 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.format.datetime.DateFo...

m0_43425898的博客 162

Java 日期 解析减少一天问题。神奇

复盘  今天在做一个入库项目,shuju信息入库后,重新编辑发现出生日期减少了一天,比如1987-08-04,转换到界面后却变成了1987-08-03,  问题发现过程     1 先看前端是否有特殊处理,经过检查发现没有问题。     2 找到获取专家基本信息接口,调用发现返回的日期的确是少了一天,这里可以判断问题出在后端     3 然后断点,发现在接口最终返回的是一个date类型,这可以断定...

samz5906的专栏 1万+

【SpringBoot】日期格式转换问题

这段时间在学习使用 SpringBoot 做项目,由于是初次使用,过程中遇到不少坑,学习过程中,时间允许的话会通过写文章方式记录我的填坑之旅。此刻的状态 进入正题,我使用 SpringBoot 的时候,首先遇到的问题就是日期格式转换了。实体类中有时间类型的属性,往往会在前端与后台的数据交换中出现日期格式转换的问题,当然也有简单粗暴的方法,把属性设置为 S...

皮卡战记 6771

SpringMVC解决@ResponseBody返回Json的Date日期类型的转换问题

在做项目的时候,发现后台把Date类型的属性以json字符串的形式返回,前台拿不到转换后的日期格式。 即使我配置了日期转换器: &lt;bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"&gt; &lt...

C. 1万+
上一篇: List集合的排序
下一篇: 关于crm项目的思考
CaculateByte
博客等级 码龄9年 7粉丝 11原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值