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

Java Spring Boot如何将GET请求ResponseEntity的日期格式化为yyyy-mm-dd?

解决Spring Boot LocalDate返回数组格式问题并适配Blazor DateOnly

方案一:实体类局部配置(单字段生效)

直接在Product实体的expirationDate字段上添加Jackson序列化注解,指定输出格式:

@Entity
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    private String name;

    private String category;

    // 指定LocalDate序列化为yyyy-MM-dd格式的字符串
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDate expirationDate;

    // getters, setters ...
}

配置后接口返回的expirationDate会变为"2023-01-22"格式的字符串,完全匹配Blazor DateOnly的默认解析规则,无需额外转换。

方案二:全局配置(所有LocalDate字段生效)

如果项目中有多个实体类使用LocalDate,可通过全局配置统一格式化规则,避免重复编码:

方式1:配置类实现

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.time.format.DateTimeFormatter;

@Configuration
public class JacksonDateConfig {
    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper mapper = new ObjectMapper();
        JavaTimeModule timeModule = new JavaTimeModule();
        // 注册LocalDate的序列化器,指定格式
        timeModule.addSerializer(LocalDate.class, 
            new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        mapper.registerModule(timeModule);
        return mapper;
    }
}

方式2:配置文件实现(更简洁)

在application.yml中添加配置:

spring:
  jackson:
    date-format: yyyy-MM-dd
    serialization:
      write-dates-as-timestamps: false
    time-zone: GMT+8

或application.properties:

spring.jackson.date-format=yyyy-MM-dd
spring.jackson.serialization.write-dates-as-timestamps=false
spring.jackson.time-zone=GMT+8

Blazor端适配验证

Blazor的DateOnly类型默认支持ISO 8601标准的yyyy-MM-dd格式字符串,直接定义DTO类即可自动解析:

public class ProductDto
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Category { get; set; }
    public DateOnly ExpirationDate { get; set; }
}

// 调用API时自动映射
var products = await Http.GetFromJsonAsync<List<ProductDto>>("/products");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:15:27