springboot项目中统一时间格式处理方法

 更新时间:2024年10月29日 09:44:36   作者:飞翔的小->子>弹->  
JacksonConfiguration主要用于配置JSON的序列化和反序列化,而LocalDateTimeFormatter则用于处理请求和响应中的LocalDateTime格式,这两个配置项在SpringBoot项目中至关重要,确保数据格式的正确处理和传输

JacksonConfiguration

主要用于配置 Jackson 的序列化和反序列化,影响 JSON 请求和响应的内容。适用于处理 JSON 数据的序列化和反序列化

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.deser.std.StringDeserializer;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@Configuration
public class JacksonConfiguration {
    @Value("${spring.jackson.date-format}")
    private String dateTimeFormat;
    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
        return builder -> {
            builder.deserializerByType(Long.TYPE, StringDeserializer.instance);
            builder.serializerByType(Long.class, ToStringSerializer.instance);
            builder.serializerByType(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(dateTimeFormat)));
            builder.deserializerByType(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(dateTimeFormat)));
            SimpleModule module = new SimpleModule();
            module.addKeySerializer(LocalDateTime.class, new JsonSerializer<>() {
                final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern(dateTimeFormat);
                @Override
                public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
                    gen.writeFieldName(FORMATTER.format(value));
                }
            });
            builder.modules(module);
        };
    }
}

LocalDateTimeFormatter

主要用于处理 Spring MVC 中的请求参数和响应体中的 LocalDateTime。它直接影响 Controller 方法中参数的解析和返回值的格式化。

import org.springframework.context.annotation.Configuration;
import org.springframework.format.Formatter;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
@SuppressWarnings("NullableProblems")
@Configuration
public class LocalDateTimeFormatter implements Formatter<LocalDateTime> {
    public static final String DATA_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS";
    public static final String DATA_TIME_FORMAT_T = "yyyy-MM-dd'T'HH:mm:ss.SSS";
    @Override
    public LocalDateTime parse(String text, Locale locale) {
        return LocalDateTime.parse(text, DateTimeFormatter.ofPattern(DATA_TIME_FORMAT));
    }
    @Override
    public String print(LocalDateTime object, Locale locale) {
        return DateTimeFormatter.ofPattern(DATA_TIME_FORMAT).format(object);
    }
}

到此这篇关于springboot项目中统一时间格式处理的文章就介绍到这了,更多相关springboot统一时间格式处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java实现时间与字符串之间转换

    java实现时间与字符串之间转换

    这篇文章主要为大家详细介绍了java实现时间与字符串之间转换,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • idea鼠标控制放大缩小的操作

    idea鼠标控制放大缩小的操作

    这篇文章主要介绍了idea鼠标控制放大缩小的操作教程,具有很好的参考价值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Java中BufferedReader类获取输入输入字符串实例

    Java中BufferedReader类获取输入输入字符串实例

    这篇文章主要介绍了Java中BufferedReader类获取输入输入字符串实例,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • 从基础学java--数组

    从基础学java--数组

    数组是相同类型数据的有序集合数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们数组的声明创建
    2021-09-09
  • 基于java解析JSON的三种方式详解

    基于java解析JSON的三种方式详解

    这篇文章主要介绍了基于java解析JSON的三种方式,结合实例形式详细分析了json解析的原理与GSON、FastJSON等常用解析操作技巧,需要的朋友可以参考下
    2016-12-12
  • Java Array.sort()源码分析讲解

    Java Array.sort()源码分析讲解

    Arrays类中有一个sort()方法,该方法是Arrays类的静态方法,在需要对数组进行排序时,非常的好用。但是sort()的参数有好几种,下面我就为大家一一介绍,这几种形式的用法
    2022-08-08
  • Spring BPP中如何优雅的创建动态代理Bean详解

    Spring BPP中如何优雅的创建动态代理Bean详解

    这篇文章主要给大家介绍了关于Spring BPP中如何优雅的创建动态代理Bean的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • Java实现树形结构的示例代码

    Java实现树形结构的示例代码

    由于业务需要,后端需要返回一个树型结构给前端,包含父子节点的数据已经在数据库中存储好。本文将为大家分享Java现树形结构的示例代码,需要的可以参考下
    2022-05-05
  • java中基本注解的知识点总结

    java中基本注解的知识点总结

    在本篇文章里小编给大家整理的是一篇关于java中基本注解的知识点总结,有需要的朋友们可以跟着学习下。
    2021-06-06
  • elasticsearch聚合查询实践示例

    elasticsearch聚合查询实践示例

    这篇文章主要为大家介绍了elasticsearch聚合查询实践示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12

最新评论