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才有作用。
参考链接:https://blog.csdn.net/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点;第二天找了以上午才找到;
参考原文链接:https://blog.csdn.net/qq_45010998/article/details/121957318

最后

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

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

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

猜你喜欢

转载自blog.csdn.net/m0_67393827/article/details/126790299
今日推荐