Spring Boot 日期格式化

打印 上一主题 下一主题

主题 877|帖子 877|积分 2631


我们先了解下,为什么需要配置日期格式化?
通常情况下,发起一个 Http 请求,Spring Boot 会根据请求路径映射到指定 Controller 上的某个方法的参数上,接着,Spring 会自动进行类型转换
对于日期类型的参数,Spring 默认是没有配置如何将字符串转换成日期类型的
未配置日期格式化会如何?

我们新建一个 Web 项目,并定义一个接口:
  1. package site.exception.springbootdateformat.controller;
  2. import org.springframework.web.bind.annotation.PostMapping;
  3. import org.springframework.web.bind.annotation.RestController;
  4. import site.exception.springbootdateformat.entity.User;
  5. /**
  6. * @time 21:03
  7. * @discription
  8. **/
  9. @RestController
  10. public class UserController {
  11.     /**
  12.      * 定义一个创建用户的接口
  13.      * @param user
  14.      * @return
  15.      */
  16.     @PostMapping("/user")
  17.     public String createUser(User user) {
  18.         // 打印创建时间
  19.         System.out.println(user.getCreateTime().toString());
  20.         return "Create user success !";
  21.     }
  22. }
复制代码
User.java:
  1. package site.exception.springbootdateformat.entity;
  2. import java.io.Serializable;
  3. import java.util.Date;
  4. /**
  5. * @time 21:00
  6. * @discription
  7. **/
  8. public class User implements Serializable {
  9.     /**
  10.      * 用户名
  11.      */
  12.     private String username;
  13.     /**
  14.      * 密码
  15.      */
  16.     private String password;
  17.     /**
  18.      * 创建时间
  19.      */
  20.     private Date createTime;
  21.     public String getUsername() {
  22.         return username;
  23.     }
  24.     public void setUsername(String username) {
  25.         this.username = username;
  26.     }
  27.     public String getPassword() {
  28.         return password;
  29.     }
  30.     public void setPassword(String password) {
  31.         this.password = password;
  32.     }
  33.     public Date getCreateTime() {
  34.         return createTime;
  35.     }
  36.     public void setCreateTime(Date createTime) {
  37.         this.createTime = createTime;
  38.     }
  39. }
复制代码
用 Postman 工具发起对该接口的表单请求,看看结果:

服务报错,无法将字符串类型转换成 java.util.Date 类型。
配置日期格式化

要让 Spring Boot 能够按照指定的格式进行日期类型转换,需要做以下步骤:

  • 定义一个 MvcConfig 类,让其实现 WebMvcConfigurer 接口;
  • 重写 addFormatters 方法;
  • 添加一个 DateFormatter;
  1. package site.exception.springbootdateformat.config;
  2. import org.springframework.context.annotation.Configuration;
  3. import org.springframework.format.FormatterRegistry;
  4. import org.springframework.format.datetime.DateFormatter;
  5. import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
  6. /**
  7. * @author www.exception.site (exception 教程网)
  8. * @date 2019/2/16
  9. * @time 20:55
  10. * @discription
  11. **/
  12. @Configuration
  13. public class MvcConfig implements WebMvcConfigurer {
  14.     /**
  15.      * 配置日期格式化
  16.      * @param registry
  17.      */
  18.     @Override
  19.     public void addFormatters(FormatterRegistry registry) {
  20.         registry.addFormatter(new DateFormatter("yyyy-MM-dd HH:mm:ss"));
  21.     }
  22. }
复制代码
接下来,再次以表单的形式访问 /user 接口,看看效果:

正确输出 Create user Success !  接口,并且控制台,也打印了 createTime 值,说明 Spring Boot 已经自动帮我们做了转换操作:

至此,如何在 Spring Boot 中配置全局的日期格式化就完成了!
注意:本节中的转换仅支持表单形式请求,不支持 application/json 的请求方式!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我爱普洱茶

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表