1. 程式人生 > 其它 >spring boot日期全域性配置

spring boot日期全域性配置

技術標籤:spring bootspring boot

@Configuration
public class TimeConfig {

    private final DateTimeFormatter datePattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    private final DateTimeFormatter timePattern = DateTimeFormatter.ofPattern("HH:mm:ss");
    private final DateTimeFormatter dateTimePattern = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

    @Bean
    public FormattingConversionService conversionService() {
        DefaultFormattingConversionService conversionService = new DefaultFormattingConversionService(true);
        // 確保@NumberFormat仍支援
        conversionService.addFormatterForFieldAnnotation(new NumberFormatAnnotationFormatterFactory());
        // @DateTimeFormat全域性配置
        DateTimeFormatterRegistrar deserialization = new DateTimeFormatterRegistrar();
        deserialization.setDateFormatter(datePattern);
        deserialization.setTimeFormatter(timePattern);
        deserialization.setDateTimeFormatter(dateTimePattern);
        deserialization.registerFormatters(conversionService);
        return conversionService;
    }

    /**
     * JsonFormat全域性配置
     * 代替 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     *
     * @return Module
     */
    @Bean
    public Module timeModule() {
        JavaTimeModule javaTimeModule = new JavaTimeModule();
        javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(dateTimePattern));
        javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(datePattern));
        javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(timePattern));
        return javaTimeModule;
    }
}