处理时间格式化BUG
前言
一、bug
二、分析
三、解决方案
四、@DateTimeFormat和@JsonFormat的区别
前言
我们在开发中会处理到时间这种格式的数据,经常遇到的bug就是因为时间格式不匹配引起的。
一、bug
Field error in object ‘student’ on field ‘birthday’: rejected value [2021-04-07]; codes [typeMismatch.student.birthday,typeMismatch.birthday,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [student.birthday,birthday]; arguments []; default message [birthday]]; default message [Failed to convert property value of type ‘java.lang.String’ to required type ‘java.util.Date’ for property ‘birthday’; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.util.Date] for value ‘2021-04-07’; nested exception is java.lang.IllegalArgumentException]]
二、分析
前台传到后台的数据类型是’java.lang.String,
而后台需要的是java.util.Date。
三、解决方案
我们需要注意:
1.在前台向后台传数据时,必须要使用url拼接参数的方式才生效;
2.导包,@DateTimeFormat属于org.springframework.format.annotation.DateTimeFormat;
3.在实体类的属性上面加上这个注解。
yyyy-MM-dd HH:mm:ss代表年月日时分秒,比如:2020-11-26 16:01:01;我们需要根据实际存储的数据来定义pattern的值。
如果 pattern = “yyyy-MM-dd HH:mm:ss”,那么前端传递的必须是年月日时分秒的字符串,否则抛出异常;
如果 pattern = “yyyy-MM-dd 01:03:03”,那么前端传递的必须是带时分秒,并且是01:02:03的字符串,否则抛出异常;
如果 pattern = “yyyy-MM-dd”,前端传递的参数带不带时分秒都是可以的,并且时分秒会被格式化为00:00:00
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)
private Date birthday;
四、@DateTimeFormat和@JsonFormat的区别
时间格式化问题@DateTimeFormat和@JsonFormat的区别
————————————————
版权声明:本文为CSDN博主「温文尔雅的清欢渡」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46460843/article/details/115705802