你还在用@DateTimeFormat?有没有更好的方法?

简介: 你还在用@DateTimeFormat?有没有更好的方法?

正文


平时的工作中,后端接口一定会有日期的类型,我们是怎么处理的呢?以前的处理方式:

  1. 使用@DateTimeFormat(pattern = "yyyy-MM-dd")
  2. 直接使用用字符串接受,具体的处理在我们的代码中完成日期的转换。

虽然上面的可以解决我们的问题,但是编码比较乱,后期维护难度比较大,这是我们怎么做才可以实现日期的转换呢?下面介绍一下好的方法


环境介绍:

本测试用例采用的是Spring-Boot项目,版本为1.5.9 ,当然 Spring-MVC也是一样的。

首先,我们不在请求接口的地方设置请求日期的类型:

30.png

请求测试:

28.png

根据我们的返回,可以知道,是没有String到Date的转换的组建。

我们找到了问题的原因,我们根据源码寻找是什么类才可以转换。

在我们的org.springframework.web.servlet.config.AnnotationDrivenBeanDefinitionParser这个类中可以看到:

27.png

实际上是给我们的Spring容器定义了一个

FormattingConversionServiceFactoryBean

这个对象,也就是

FormattingConversionService

这个类的组建对象,根据源码,问题就很好解决了,我们可以自定义一个转换器:

26.png

用作与字符串到日期的转换,之后,我们根据bean的生命周期,可以定一个后置处理器修改改组建的一些属性:

25.png

理论上,我们的日期可以正确的解析了,测试一下:

24.png

成功的返回,说明我们的配置成功啦!!

这么做有什么好处呢?好处都在解析的位置:

22.png

看上面,我们可以定义不同的解析日期的pattern来解析我们请求的参数,实现简单方便的请求以及方便维护的结果!

相关文章
|
5月前
|
XML JSON 前端开发
SpingMVC中日期格式化与转换的那些事
SpingMVC中日期格式化与转换的那些事
54 0
|
2月前
|
人工智能 IDE Java
CodeFuse代码优化实战:Java日期格式化时如何正确表示年份?
Java日期格式化时这里的坑你知道吗?一起来看正确用法!使用 CodeFuse 代码优化功能,可以帮你完美避坑,快来试试吧~
36 0
|
4月前
|
Android开发 iOS开发
重新学习一下new Date()
重新学习一下new Date()
|
10月前
|
存储 SQL 安全
【JavaSE专栏41】Java常用类 Date 解析,高效处理日期问题
【JavaSE专栏41】Java常用类 Date 解析,高效处理日期问题
|
12月前
|
Java API
Java常用日期类(包含三代)_Date类及Calendar类等
从JDK 1.0出现。 表示一个日期和时间,精确到毫秒,内部getTime()从1970年1月1号开始算。
80 0
|
前端开发 JavaScript
前端学习案例-new Date()参数
前端学习案例-new Date()参数
194 0
|
前端开发 JavaScript 计算机视觉
手把手教你封装一个日期格式化的工具函数
最近还是在做那个练习的小项目,做完接收数据并渲染到页面上的时候,发现后端小伙伴又在给我找活干了欸,单纯的渲染这当然是小kiss啦,可这个字段是个什么东西? "createTime" : "2021-01-17T13:32:06.381Z", "lastLoginTime" : "2021-01-17T13:32:06.381Z"
|
安全 Oracle Java
告别jodatime!拥抱Java8日期时间类LocalDate、LocalDateTime详解(上)
告别jodatime!拥抱Java8日期时间类LocalDate、LocalDateTime详解
194 0
告别jodatime!拥抱Java8日期时间类LocalDate、LocalDateTime详解(上)
|
SQL Java 测试技术
告别jodatime!拥抱Java8日期时间类LocalDate、LocalDateTime详解(下)
告别jodatime!拥抱Java8日期时间类LocalDate、LocalDateTime详解
262 0
|
存储 Java 测试技术
告别jodatime!拥抱Java8日期时间类LocalDate、LocalDateTime详解(中)
告别jodatime!拥抱Java8日期时间类LocalDate、LocalDateTime详解
165 0
告别jodatime!拥抱Java8日期时间类LocalDate、LocalDateTime详解(中)