admin管理员组

文章数量:1794759

JAVA 实体类对日期的格式化、序列化日期时间

JAVA 实体类对日期的格式化、序列化日期时间

通过百度查询,找到了3种方式

1.@JsonFormat和@JSONField是处理请求参数为json格式的时间 例如前端传送时间为“2020-08-12 23:28:00”,使用@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”, timezone = “GMT+8”),这两者前面都带JSON,接收请求和返回数据格式为json时,注解生效。JSONField目前最长的用属性是@JSONField(name=”resType”)和 @JSONField(format=”yyyy-MM-dd”)

2.@DateTimeFormat也是处理时间格式,但它不支持反序列化,也就是不能转化前端数据格式为json。它能接收表单形式的时间格式,直接使用注解@DateTimeFormat(pattern=”yyyy-MM-dd”)

3.总结 前端读取数据库日期字段时使用 @JsonFormat和@JSONField 可以将时间戳转为格式化的日期数据。 前端使用JSON提交时用@JsonFormat和@JSONField 前端使用Form提交时用@DateTimeFormat

@DateTimeFormat将入参date类型格式化为指定格式传入 ,@JsonFormat将结果date类型以指定格式展示。

对于@RequestBody的请求@DateTimeFormat不起作用,@JsonFormat对它的入参和出参都起作用。@RequestParam时@DateTimeFormat才有作用。 参考链接:blog.csdn/weixin_41712768/article/details/107969184

解决方案 一 (不是太推荐,因为不可能所有的实体类都去加这个注解,这也是我们昨天头疼的问题) 给实体类上面加上 @JsonFormat 反序列化 格式化日期时间注解

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = “yyyy-MM-dd HH:mm:ss”, timezone = “GMT+8”) private Date updateTime; 解决方案 二 我觉得最好使的办法

可以在Spring的全局配置文件application.yml中添加以下配置即可: spring: jackson: date-format: "yyyy-MM-dd HH:mm:ss " time-zone: “GMT+8” mvc: date-format: "yyyy-MM-dd HH:mm:ss " 以上配置等同于在字段上添加注解: @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = “yyyy-MM-dd HH:mm:ss”, timezone = “GMT+8”) 如果你字段时间不要yyyy-MM-dd HH:mm:ss格式的,可以通过在字段上添加注解方式格式化日期,当然如果你只需要年月日,可以将表对应的字段设置为Date(年月日)而不是DateTime(年月日时分秒)类型

spring: jackson: serialization: write-dates-as-timestamps: true time-zone: GMT+8 default-property-inclusion: non-null date-format: yyyy-MM-dd HH:mm:ss 这个问题,我们项目组好几个同事,直接干到11点;第二天找了以上午才找到; 参考原文链接:blog.csdn/qq_45010998/article/details/121957318

最后

深知大多数初中级JAVA工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

小编已加密:aHR0cHM6Ly9kb2NzLnFxLmNvbS9kb2MvRFVrVm9aSGxQZUVsTlkwUnc==出于安全原因,我们把网站通过base64编码了,大家可以通过base64解码把网址获取下来。

本文标签: 日期时间序列化实体类java