在spring Boot中如何设置spring MVC的时间格式
目录
为什么要设置spring MVC的时间格式?
springMVC默认时间格式是“/”,如果前端传过来的时间格式不符合的话,就会出400异常,这个时候就需要同一格式。统一的方法有两种:
- 1.设置前端的时间格式
- 2.就是设置spring MVC的默认时间格式
spring mvc如何设置时间的格式的?
~ 例如:
-
请求:localhost/day16-springmvc/testParam4?date=2020-2-8 15:13:41
获取请求中的date参数的值
-
日期类型的参数绑定
浏览器请求:/testParam4?date=2020-3-3 15:36:08 -
获取请求中的date参数的值
HTTP Status 400 – Bad Request: 请求参数类型不匹配
因为springmvc框架底层默认的时间格式是以斜杠(/)分隔,
~ 例如:
/testParam4?date=2020/3/3 15:36:08
因此,
解决方式一:将浏览器发送的日期格式改为斜杠分隔
解决方式二:将springmvc框架底层默认以斜杠分隔时间改为用横杠分隔
注意:改为横杠分隔后,斜杠分隔的时间在服务器端将无法接收
@RequestMapping("/testParam4")
public String testParam4( Date date ) {
System.out.println( “date=”+date );
return “home”;
}
自定义日期转换格式:将springmvc框架底层默认以斜杠分隔时间改为用横杠分隔
@InitBinder
public void InitBinder (ServletRequestDataBinder binder){
binder.registerCustomEditor(java.util.Date.class,
new CustomDateEditor(
new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”), true)
);
} -
日期类型的参数绑定
spring mvc和spring整合后设置时间格式的简单方式
- 整合以后,可以通过注解开发,大大简化了我们的代码,现在我们只需要在pojo类里添加@DateTimeFormat即可
-
这里解释一下:
-
@DateTimeFormat(pattern=“yyyy-MM-dd”,timezone = “GMT+8”)
pattern:是你需要转换的时间日期的格式
timezone:是时间设置为东八区,避免时间在转换中有误差
提示:@DateTimeFormat注解可以在属性的上方,同样可以在属性对应的get方法上,两种方式没有区别
3.完成上面两步之后,我们用对应的实体类来前端传过来的值时就完成了时间格式的转换,再提交给数据库时就是一个符合我们设置的时间格式了
如果通过spring Boot开发还可以这样做
- 可以在apllication.property加入下面配置就可以
#时间戳统一转换
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
- 如果是apllication.yml加入下面配置
#时间戳统一转换
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
【扩展】注解@DateTimeFormat和@JsonFormat
注解@JsonFormat与@DateTimeFormat类似,主要负责将数据库中的时间以给定形式呈现到前端
本文地址:https://blog.csdn.net/WST_T/article/details/108034351