网上关于解释 @JsonFormat 和 @DateTimeFormat 的坑

在网上看了很多,大部分人就是复制粘贴解释,如下

-- @JsonFormat(timezone = "GMT+8",pattern="yyyy-MM-dd")
	timezone:时区,设置为东八区,避免时间在转换中有误差
	pattern:要转换成的时间格式
	说明:@JsonFormat注解,可以置于属性上方,也可以置于属性对应get方法上方。
@JsonFormat:主要是后台到前台的时间格式的转换
@DateTimeFormat:主要是前后到后台的时间格式的转换

真的服了,真希望各位在发文章时能自己试试在发布,几个人发错了,一群人全都复制粘贴转载,错的人越来越多,害…
今天在写接口时发现问题,前端传给后端的数据我用 @DateTimeFormat
并没有得到我想要的类型数据
直接贴图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到访问直接报错,原以为是会把数据的时分秒给截掉
再看下面
在这里插入图片描述
访问成功!
多次尝试后得出结论:

1.@DateTimeFormat 并不会根据得到其属性 pattern 把前端传入的数据转换成自己想要的格式,而是将前端的String类型数据封装到Date类型;其次它的 pattern 属性是用来规范前端传入数据的格式
2.@DateTimeFormat 它用于前端日期String数据提交封装到日期Date数据类型中

@JsonFormat 测试
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到时间参数的时间被改成了 00:00:00,8时是时区问题。
在这里插入图片描述
放行后可以看到返回的数据被截取了,按照其 pattern 属性设置规则截取
结论:

1.@JsonFormat 会对前端传来的数据进行处理,按照其 pattern 属性定义把传入的数据多余的补0
2.@JsonFormat 同样会对后端传给前端的数据进行处理,按照其 pattern 属性定义直接进行截取返回给前端

总结:

1.@JsonFormat 和 @DateTimeFormat 用于String类型对Date类型的封装
2.@JsonFormat t同时会对后端数据传给前端Json字符串日期截取,
	按照其 pattern 属性定义截取
3.前端JSON字符串yyyy-MM-dd HH:mm:ss 类型想要封装给LocalDateTime类型
	需要用@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
4.Date类型前端不能直接传 yyyy-MM-dd HH:mm:ss 格式字符串,
	但是可以直接传 yyyy-MM-dd 格式,数据库会存储带补全的时分秒数据

暂时就是这样,菜鸡一个,如果有问题欢迎大家指正、交流!

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
@jsonformat和@datetimeformat是两个常用的注解,用于在Java应用程序中格式化日期和时间。 @jsonformat注解用于在对象的属性上指定日期和时间的格式,以便在将对象转换为JSON字符串时使用。例如,我们可以使用以下方式在对象的属性上使用@jsonformat注解来指定日期的格式: ```java public class User { private String name; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date birthDate; // getters and setters } ``` 在上面的例子中,@JsonFormat注解指定了birthDate属性的日期格式为"yyyy-MM-dd HH:mm:ss"。当将User对象转换为JSON字符串时,birthDate属性的值将按照指定的格式进行格式化。 @datetimeformat注解用于在Spring框架中控制器方法参数或返回值上指定日期和时间的格式。它可以用于将请求参数的字符串解析为日期对象,或者将日期对象格式化为响应体中的字符串。例如,我们可以使用以下方式在控制器方法参数上使用@datetimeformat注解来指定日期的格式: ```java @GetMapping("/users") public String getUser(@DateTimeFormat(pattern = "yyyy-MM-dd") Date birthDate) { // 处理逻辑 } ``` 在上面的例子中,@DateTimeFormat注解指定了birthDate参数的日期格式为"yyyy-MM-dd"。当请求到达该控制器方法时,会将请求参数中的字符串解析为指定格式的日期对象。 总的来说,@jsonformat和@datetimeformat注解都是用于在Java应用程序中格式化日期和时间,但用途略有不同。@jsonformat注解用于将对象转换为JSON字符串时指定日期格式,而@datetimeformat注解用于在Spring框架中控制器方法参数或返回值上指定日期格式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值