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统一时间格式处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Nacos配置中心搭建及动态刷新配置及踩坑记录

    Nacos配置中心搭建及动态刷新配置及踩坑记录

    这篇文章主要介绍了Nacos配置中心搭建及动态刷新配置及踩坑记录,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • java中jar包的生成与使用方式

    java中jar包的生成与使用方式

    这篇文章主要介绍了java中jar包的生成与使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Java并发编程之原子操作类详情

    Java并发编程之原子操作类详情

    这篇文章主要介绍了Java并发编程之原子操作类详情,文章基于Java并发编程展开相关内容,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-04-04
  • Spring Aop之AspectJ注解配置实现日志管理的方法

    Spring Aop之AspectJ注解配置实现日志管理的方法

    下面小编就为大家分享一篇Spring Aop之AspectJ注解配置实现日志管理的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • java实体对象与Map之间的转换工具类代码实例

    java实体对象与Map之间的转换工具类代码实例

    这篇文章主要介绍了java实体对象与Map之间的转换工具类代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Spring深入刨析声明式事务注解的源码

    Spring深入刨析声明式事务注解的源码

    在spring注解中,使用声明式事务,需要用到两个核心的注解:@Transactional注解和@EnableTransactionManagement注解。将@Transactional注解加在方法上,@EnableTransactionManagement注解加在配置类上
    2022-07-07
  • SpringBoot定制JSON响应数据的实现

    SpringBoot定制JSON响应数据的实现

    本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02
  • Java中常用队列的使用解读

    Java中常用队列的使用解读

    这篇文章主要介绍了Java中常用队列的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • Java基本数据类型之间的相互转换详解

    Java基本数据类型之间的相互转换详解

    这篇文章主要讲解Java中基本数据类型的转换,数据之间相互转换是经常会用到的基础操作,文中讲的很清晰,希望能给大家做一个参考。
    2022-05-05
  • Java如何实现长连接

    Java如何实现长连接

    这篇文章主要介绍了Java如何实现长连接,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下
    2020-09-09

最新评论