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

SpringDoc OpenApi v3响应头时区设置:如何将GMT时间调整为UTC+3

SpringDoc OpenApi v3 响应头时区调整为UTC+3的解决方案

方案1:全局设置JVM默认时区(全局生效,配置最简单)

直接在项目启动类的main方法最顶部添加时区设置代码即可:

public static void main(String[] args) {
    // 全局设置默认时区为UTC+3
    TimeZone.setDefault(TimeZone.getTimeZone("GMT+3"));
    SpringApplication.run(Application.class, args);
}

该配置会对所有Spring组件、Jackson序列化逻辑、容器生成的默认响应头统一生效。

方案2:Spring Boot配置文件调整(针对返回体时间序列化场景)

如果是接口返回体中的时间字段时区不符合预期,可在application.yml或application.properties中添加Jackson配置:

spring:
  jackson:
    time-zone: GMT+3
    date-format: yyyy-MM-dd HH:mm:ss # 可根据业务需求自定义时间格式

方案3:自定义过滤器强制修改响应头(针对HTTP标准Date头修改场景)

如果需要强制覆盖容器默认生成的GMT时区Date响应头,可实现自定义过滤器:

import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

@Component
public class CustomTimeZoneHeaderFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
            throws IOException, ServletException {
        HttpServletResponse httpResp = (HttpServletResponse) response;
        chain.doFilter(request, response);
        // 时间格式符合HTTP响应头规范
        SimpleDateFormat dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US);
        dateFormat.setTimeZone(TimeZone.getTimeZone("GMT+3"));
        httpResp.setHeader("Date", dateFormat.format(new Date()));
    }
}

注意:HTTP协议标准规定Date响应头必须使用GMT(UTC)时区,强制修改可能导致部分HTTP客户端解析异常。如果是业务场景需要返回UTC+3时间,建议使用自定义响应头如X-Biz-Response-Time存放,避免兼容问题。

内容的提问来源于stack exchange,提问作者Maksym Rybalkin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:57:02