SpringBoot 请求日期转换问题

98 阅读1分钟

SpringBoot 请求日期问题, 1.日期充当参数,后端绑定的时候字符串转日期错误 2.请求结果返回值,日期格式化自己需要的类型

一、get请求,前台传日期参数到后台接口,抛出日期转换异常。解决

package com.g_link.app.common.config;

import org.springframework.format.Formatter;
import org.springframework.stereotype.Component;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

/**
 * 前台-》后台,日期格式化
 *
 * @author mayanze
 * @since 2023-10-19 14:47
 */
@Component
public class ParameterFormatter implements Formatter<Date> {

    private static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";

    @Override
    public Date parse(String text, Locale locale) throws ParseException {
        SimpleDateFormat dateFormat = createDateFormat(locale);
        return dateFormat.parse(text);
    }

    @Override
    public String print(Date object, Locale locale) {
        SimpleDateFormat dateFormat = createDateFormat(locale);
        return dateFormat.format(object);
    }

    private SimpleDateFormat createDateFormat(Locale locale) {
        SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_TIME_FORMAT, locale);
        dateFormat.setLenient(false);
        return dateFormat;
    }
}

二、后台返回日期结果到前端

package com.g_link.app.common.config;

import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.boot.jackson.JsonComponent;
import org.springframework.context.annotation.Bean;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * 请求返回值格式化
 * 后台-》前台
 * @author mayanze
 * @since 2023-10-19 11:23
 */
@JsonComponent
public class ResultFormatter {
    private static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";

    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
        return builder -> {
            builder.serializerByType(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DATE_TIME_FORMAT)));
//            builder.deserializerByType(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DATE_TIME_FORMAT)));
        };
    }
}