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)));
};
}
}