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

Spring Boot中Swagger date-time未输出yyyy-MM-dd'T'HH:mm:ssZ格式问题

解决Swagger Codegen生成日期格式为+00:00而非Z的问题

swagger-codegen-maven-plugin 2.4.1默认处理UTC时区时会输出+00:00,而非你需要的Z后缀格式,可通过以下几种方式调整:

1. 配置Swagger Codegen插件参数

在maven插件配置里指定日期库为Java 8的datetime类型,并设置对应的格式化规则:

<plugin>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-codegen-maven-plugin</artifactId>
    <version>2.4.1</version>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <inputSpec>${project.basedir}/src/main/resources/swagger.yaml</inputSpec>
                <language>spring</language>
                <!-- 指定日期库 -->
                <dateLibrary>java8-localdatetime</dateLibrary>
                <additionalProperties>
                    <!-- 设置日期、时间、日期时间的统一格式 -->
                    <property>
                        <name>dateFormat</name>
                        <value>yyyy-MM-dd'T'HH:mm:ssZ</value>
                    </property>
                    <property>
                        <name>timeFormat</name>
                        <value>yyyy-MM-dd'T'HH:mm:ssZ</value>
                    </property>
                    <property>
                        <name>dateTimeFormat</name>
                        <value>yyyy-MM-dd'T'HH:mm:ssZ</value>
                    </property>
                </additionalProperties>
            </configuration>
        </execution>
    </executions>
</plugin>

2. 给生成的模型字段添加Jackson注解

如果插件配置不生效,可直接在生成的CommandResponse类中给requestTime字段添加格式化注解:

import com.fasterxml.jackson.annotation.JsonFormat;

public class CommandResponse {
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssZ", timezone = "UTC")
    private String requestTime;

    // 此处省略getter、setter方法
}

注意:如果后续重新生成代码,手动添加的注解会被覆盖,建议通过自定义Swagger Codegen模板来持久化这个配置。

3. 全局配置Jackson日期序列化规则

在Spring Boot配置文件中设置全局的Jackson日期格式,让所有date-time类型字段统一输出为目标格式:

application.properties

spring.jackson.date-format=yyyy-MM-dd'T'HH:mm:ssZ
spring.jackson.time-zone=UTC

application.yml

spring:
  jackson:
    date-format: yyyy-MM-dd'T'HH:mm:ssZ
    time-zone: UTC

由于你使用的swagger-codegen-maven-plugin版本较旧,部分参数可能存在兼容性问题,建议优先尝试插件配置的方式,若无效再结合全局Jackson配置调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:20:20