@JsonFormat与@DateTimeFormat注解的使用

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

 

2018年07月25日 14:39:44 eeeeasy 阅读数:3219

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

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

1.注解@JsonFormat

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

 
  1. <!--JsonFormat-->

  2.  
  3. <dependency>

  4. <groupId>com.fasterxml.jackson.core</groupId>

  5. <artifactId>jackson-annotations</artifactId>

  6. <version>2.8.8</version>

  7. </dependency>

  8.  
  9. <dependency>

  10. <groupId>com.fasterxml.jackson.core</groupId>

  11. <artifactId>jackson-databind</artifactId>

  12. <version>2.8.8</version>

  13. </dependency>

  14.  
  15. <dependency>

  16. <groupId>org.codehaus.jackson</groupId>

  17. <artifactId>jackson-mapper-asl</artifactId>

  18. <version>1.9.13</version>

  19. </dependency>

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

 
  1. import java.util.Date;

  2.  
  3. import com.fasterxml.jackson.annotation.JsonFormat;

  4.  
  5. public class TestClass {

  6.  
  7. //设置时区为上海时区,时间格式自己据需求定。

  8. @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")

  9. private Date testTime;

  10.  
  11.  
  12. public Date gettestTime() {

  13. return testTime;

  14. }

  15.  
  16. public void settestTime(Date testTimee) {

  17. this.testTime= testTime;

  18. }

  19. }

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

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

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

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

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

2.注解@DateTimeFormat

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

 
  1. <!-- joda-time -->

  2. <dependency>

  3. <groupId>joda-time</groupId>

  4. <artifactId>joda-time</artifactId>

  5. <version>2.3</version>

  6. </dependency>

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

 
  1.  
  2.  
  3. @DateTimeFormat(pattern = "yyyy-MM-dd")

  4. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")

  5. private Date symstarttime;

  6.  
  7. @DateTimeFormat(pattern = "yyyy-MM-dd")

  8. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")

  9. private Date symendtime;

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

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

 

总结: 

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

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

    

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

相关推荐

@JsonFormat注解和时区问题

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

wh柒八九的博客 3万+

@DateTimeFormat和@JsonFormat介绍

@DateTimeFormat和@JsonFormat介绍

qq_52030824的博客 2万+

行人重识别(ReID)基础知识入门

行人重识别(Person re-identification)主要目的是针对出现在监控摄像头内的某个目标行人,准确快速地从监控网络其他摄像头内的大量行人中将这个目标行人标识出来。如图所示一个区域有多个摄像头拍摄视频序列,ReID的要求对一个摄像头下感兴趣的行人,检索到该行人在其他摄像头下出现的所有图片。

用于记录 1万+

@DateTimeFormat与@JsonFormat详解

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

imVainiycos的博客 5万+

中国城市统计年鉴1991-2024面板数据真正无缺失值填补指标说明

大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。

yushibing717的博客 929

Arcgis 10.3 与 ArcGIS Engine 10.3 安装与破解

Arcgis 10.3 与 ArcGIS Engine 10.3 安装与破解

weixin_52127098的博客 4726

@DateTimeFormat 和 @JsonFormat 注解

1. 准备 定义一个pojo,它有一个 java.util.Date 类型的属性 date。 import java.util.Date; public class DateVo { private Date date; public void setDate(Date date){ this.date = date; } public D...

月下泛舟的博客 25万+

TI电量计BQ40Z50R2循环学习实战:从量产文件生成到关键标志位解析

本文详细解析了TI电量计BQ40Z50R2的循环学习实战流程,从量产文件生成到关键标志位解析。通过实战案例和易错分析,帮助工程师避开常见陷阱,提升电量计配置效率。重点介绍了循环学习前的准备工作、量产文件生成步骤及关键标志位的深度解读,适用于电池管理系统开发人员。

weixin_30505225的博客 439

java 时间参数注解@DatetimeFormat和@JsonFormat

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

qq_34654509的博客 2万+

车载以太网入坑指南,从小白到懂哥的进阶之路【技术分享】

各位技术大佬们好!最近公司项目涉及到车载以太网,刚开始完全懵逼,花了大半个月时间各种查资料、测试设备,总算是摸清了门道。想着互联网上卧虎藏龙,肯定有不少大佬对这个技术感兴趣,所以写个帖子分享一下,顺便求各位大佬指点。

starelink的博客 1262

同步整流buck电路图设计:手把手入门必看

从零开始拆解同步整流Buck电路图及其原理,手把手带你画出关键拓扑、选型MOSFET、分析续流路径。重点讲清占空比控制逻辑与体二极管导通损耗的规避方法,让buck电路图及其原理真正落地可调、稳定可靠。

weixin_33308579的博客 997

@JsonFormat、@DateTimeFormat、@JSONField注解的使用

1.注解@JsonFormat 1)使用maven引入@JsonFormat所需要的jar包 &lt;dependency&gt; &lt;groupId&gt;com.fasterxml.jackson.core&lt;/groupId&gt; &lt;artifactId&gt;jackson-annotations&lt;/artifactId&gt; &lt;version&gt;2...

musi_m的博客 9945

【1】Python交叉编译到OpenHarmony标准系统运行(arm32位)

本文介绍如何Python语言如何在OpenHarmony标准系统运行,包括5.0r和4.1r以及4.0r,和未来版本的OpenHarmony版本上。 Python语言在OpenHarmony上使用,需要将Python解释器CPython移植到OpenHarmony标准系统。通过交叉编译的方式。

weixin_58069108的博客 930

@JsonFormat @DateTimeFormat 注解

pattern = “yyyy-MM-dd HH:mm:ss”:告诉 Spring 框架,期望这个参数的字符串格式是 yyyy-MM-dd HH:mm:ss, Spring 就可以按照这个格式将其解析并赋值给对应的属性。○ pattern = “yyyy-MM-dd HH:mm:ss”:按照 yyyy-MM-dd HH:mm:ss 这种格式转换为字符串。○ pattern = “yyyy-MM-dd HH:mm:ss”:按照 yyyy-MM-dd HH:mm:ss 这种格式转换为字符串。

寿春 1307

机器人中的数值优化(一)—— 数学优化、凸集合与凸函数

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,下半部分介绍带约束的优化,中间会穿插一些路径规划方面的应用实例。

慕羽★的博客 2521

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

一篇文章教你如何在项目中正确使用@DateTimeFormat注解和@JsonFormat注解

项目中大家肯定都遇到过前端传时间参数给后端,最常见的时间格式为(如:2022-10-26)或者就是带上的时间格式比如(2022-10-26 16:18:49),我们数据库一般都是使用(也就是带时分秒的时间格式),那么我们一般是如何处理时间格式的呢?,然后再进行转换处理(此方法简单并且可以很方便的分辨出参数是否有误,但需要来回转换,因此比较繁琐,而且代码显得臃肿,因此我们该方式)

lingerlan510的博客 3794

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

@JsonFormat 和 @DateTimeFormat 时间格式化注解详解(不看血亏)

前后数据交互过程中,Date类型的数据经常会出现类型映射转换的错误,为了达到业务的目标时间格式,通常会使用@JsonFormat 和 @DateTimeFormat,但是这两者有什么区别呢? 目录一、示例代码 一、示例代码 先准备一个简单POJO,拥有Date类型的成员变量: @Data public class DateEntity { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") // @DateT.

zhuzicc的博客 5万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

@JsonFormat 和 @DateTimeFormat 注解区别及作用

标题

天天发梦的梦想哥 1万+

详细分析Java中的@JsonFormat注解和@DateTimeFormat注解

为了使生效,项目必须引入 Jackson 库的相关依赖:(如果是springboot项目,可不用配置,本身spring-boot-start-web依赖已包含)主要用于控制如何将 Java 对象中的日期时间格式化为 JSON 输出(即从后端到前端的格式化)适用于序列化和反序列化 JSON 数据,通常用在实体类中的日期字段上。

IT枫斗者的博客 1352

@DateTimeFormat 注解 和 @JsonFormat 注解

一、背景 平常在web开发过程中,在前后台日期数据的交互过程中,经常会遇到一些问题。实体类里面使用的是java.util.Date类型保存日期数据。而前台向后台传递数据的时候用的是字符串。这样会出现格式转换问题。而在后台向前台传递数据的过程中。日期格式将会被转换为长整型。这显然不是我们想要的结果。为了解决此类问题。就用到了@DateTimeFormat注解 和@JsonFormat注解。 二、发现问题 在网上查阅资料的过程中,发现大部分作者给出的解释并不全面,大多数都是说,前台向后台传递数据用...

大志的博客 2606

Spring之@JsonFormat与@DateTimeFormat注解的使用

1、配置方式 spring boot在application.yml,给出默认的格式 spring: mvc: date-format: yyyy-MM-dd HH:mm:ss jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 2、注解方式 前端传到后台时间参数格式的规范要求;后台返...

春风化雨 5093
上一篇: java中List、Array、Map、Set等集合相互转换的最佳方法
下一篇: joda dateTime简单用法
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值