zoukankan      html  css  js  c++  java
  • Spring Boot(十二):LocalDateTime格式化处理

    Java 8之后,日期类的处理建议使用java.time包中对应的LocalDateTime, LocalDate, LocalTime类。(参考Java8新特性)

    在Spring Boot中(验证版本:2.1.5.RELEASE),日期类的序列化格式可能不是自己所希望的,需要定义为自己的格式。有两种方式实现。

    1. 注解方式

    分别使用 @JsonFormat, @DateTimeFormat 来定义序列化(bean转json)与反序列(json转bean)时的格式,如

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime dateTime;

     

     

    2. 统一配置方式

    定义一个配置类,对ObjectMapper对象进行定制,指定日期类对应的序列化与反序列化处理对象,如

    @Configuration
    public class LocalDateTimeFormatConfig {
    private static final String DEFAULT_DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
    private static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";
    private static final String DEFAULT_TIME_PATTERN = "HH:mm:ss";

    @Bean
    @Primary
    public ObjectMapper objectMapper(){
    ObjectMapper objectMapper = new ObjectMapper();
    JavaTimeModule javaTimeModule = new JavaTimeModule();
    javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_PATTERN)));
    javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_PATTERN)));
    javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_PATTERN)));
    javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_PATTERN)));
    javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_PATTERN)));
    javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_PATTERN)));
    objectMapper.registerModule(javaTimeModule);
    return objectMapper;
    }
    }

     

    3. 总结

    注解的方式需要在每个属性上进行标注,如果日期类属性较多则较为繁琐,自定义配置类方式可以对日期进行统一的格式化处理。两者都存在的情况下,以注解为准,即注解方式会覆盖统一配置方式。


    欢迎关注我的微信公众号,及时获取最新分享

  • 相关阅读:
    MySQL读写分离
    Error:(1, 1) java: 非法字符: ‘ufeff’
    Java 集合系列(四)—— ListIterator 源码分析
    Java 集合系列(三)—— LinkedList
    Java 集合系列(二)—— ArrayList
    Java 集合系列(一)
    Docker之进入容器(三)
    Docker之常用命令(二)
    Docker之初识(一)
    Redis可视化工具 Redis Desktop Manager
  • 原文地址:https://www.cnblogs.com/spec-dog/p/11865059.html
Copyright © 2011-2022 走看看