You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中如何统一配置Date类型变量的接收格式(无需逐字段加注解)

全局统一Date类型请求参数格式化方案

不需要给每个Date字段单独添加@JsonFormat注解,直接通过以下两种全局配置方式就能实现统一解析规则:

1. 配置文件快速配置(Spring Boot 2.x+适用)

在项目的application.yml中添加全局Jackson配置:

spring:
  jackson:
    date-format: dd-MM-yyyy HH:mm:ss
    time-zone: Asia/Tokyo

如果习惯用application.properties,则对应配置:

spring.jackson.date-format=dd-MM-yyyy HH:mm:ss
spring.jackson.time-zone=Asia/Tokyo

配置生效后,所有通过@RequestBody接收的Date类型字段都会自动按指定格式解析,同时接口返回的Date类型数据也会用该格式序列化。

2. 自定义Jackson配置类(灵活扩展场景)

如果需要更精细的控制(比如仅对请求解析生效、不影响返回序列化,或者兼容Java 8的时间类型),可以编写配置类替换默认的ObjectMapper:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;

import java.text.SimpleDateFormat;
import java.util.TimeZone;

@Configuration
public class JacksonGlobalConfig {
    @Bean
    public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) {
        ObjectMapper objectMapper = builder.build();
        
        // 配置Date类型的全局解析/序列化格式及时区
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
        dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo"));
        objectMapper.setDateFormat(dateFormat);
        
        // 兼容Java 8 LocalDateTime等时间类型(可选)
        objectMapper.registerModule(new JavaTimeModule());
        objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
        
        return objectMapper;
    }
}

这个配置会全局覆盖默认的Jackson解析规则,优先级高于配置文件。如果个别字段需要特殊格式,单独添加@JsonFormat注解即可,它会覆盖全局配置。

注意事项

  • 格式字符串里的MM代表两位月份,mm是分钟,注意别混淆,你的需求里dd-mm-yyyy应该是笔误,实际要表示月份的话用dd-MM-yyyy。
  • 时区Asia/Tokyo必须设置正确,否则会出现时间偏移问题。

内容的提问来源于stack exchange,提问作者Quốc Kiệt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 20:24:31