From a22249bfe0ac068f7c2c0a167aa8102ea98def0e Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期二, 04 六月 2024 12:01:02 +0800 Subject: [PATCH] 提交LocalDateTime 序列化 反序列化配置 --- ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/config/ApplicationConfig.java | 70 +++++++++++++++++++++++++++++++++++ 1 files changed, 70 insertions(+), 0 deletions(-) diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/config/ApplicationConfig.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/config/ApplicationConfig.java index d7477b0..dfb1063 100644 --- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/config/ApplicationConfig.java +++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/config/ApplicationConfig.java @@ -1,9 +1,17 @@ package com.ruoyi.common.security.config; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.TimeZone; import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; import org.springframework.context.annotation.Bean; +import org.springframework.core.convert.converter.Converter; /** * 系统配置 @@ -12,6 +20,9 @@ */ public class ApplicationConfig { + + private static final String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; + private static final String DATE_PATTERN = "yyyy-MM-dd"; /** * 时区配置 */ @@ -29,4 +40,63 @@ }; } + /** + * string转localdate + */ + @Bean + public Converter<String, LocalDate> localDateConverter() { + return new Converter<String, LocalDate>() { + @Override + public LocalDate convert(String source) { + if (source.trim().length() == 0) { + return null; + } + try { + return LocalDate.parse(source); + } catch (Exception e) { + return LocalDate.parse(source, DateTimeFormatter.ofPattern(DATE_PATTERN)); + } + } + }; + } + + /** + * string转localdatetime + */ + @Bean + public Converter<String, LocalDateTime> localDateTimeConverter() { + return new Converter<String, LocalDateTime>() { + @Override + public LocalDateTime convert(String source) { + if (source.trim().length() == 0) { + return null; + } + // 先尝试ISO格式: 2019-07-15T16:00:00 + try { + return LocalDateTime.parse(source); + } catch (Exception e) { + return LocalDateTime.parse(source, + DateTimeFormatter.ofPattern(DATE_TIME_PATTERN)); + } + } + }; + } + + /** + * 统一配置 + */ + @Bean + public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() { + JavaTimeModule module = new JavaTimeModule(); + LocalDateTimeDeserializer localDateTimeDeserializer = new LocalDateTimeDeserializer( + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + module.addDeserializer(LocalDateTime.class, localDateTimeDeserializer); + return builder -> { + builder.simpleDateFormat(DATE_TIME_PATTERN); + builder.serializers(new LocalDateSerializer(DateTimeFormatter.ofPattern(DATE_PATTERN))); + builder.serializers( + new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DATE_TIME_PATTERN))); + builder.modules(module); + }; + } } -- Gitblit v1.7.1