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

Jackson+Kotlin环境下LocalDate默认日期格式设置及最优方案咨询

方案选型建议

优先选方案2:先按约定的yyyy-MM-dd格式接收LocalDate字段,需要调用下游接口时再格式化为MM/dd/yyyy字符串。

  • 入参格式是服务和上游调用方的接口契约,随意修改需要联动上游调整,改造成本高,还容易出现兼容性问题
  • LocalDate本身是不带格式的日期对象,仅存储日期数值,后续输出时再指定格式更灵活,不会和入参逻辑耦合

如果你的上游调用方可以配合调整入参格式,统一用MM/dd/yyyy传值,再选择方案1。

具体实现方法

方案2实现(推荐)

不需要改动现有入参解析逻辑,需要输出指定格式时两种处理方式可选:

  1. 手动转成字符串使用
import java.time.format.DateTimeFormatter

val dateFormatter = DateTimeFormatter.ofPattern("MM/dd/yyyy")
val formattedDate = createDate.format(dateFormatter)
  1. 下游接口请求DTO单独指定序列化格式
    如果用Quarkus RestClient调用下游,直接给对应DTO字段加@JsonFormat注解即可,赋值时直接传入接收的LocalDate对象,Jackson会自动按指定格式序列化
import com.fasterxml.jackson.annotation.JsonFormat
import java.time.LocalDate

data class DownstreamRequest(
    @JsonFormat(pattern = "MM/dd/yyyy")
    val createDate: LocalDate,
    val accountId: Int
)

方案1实现(需上游配合改入参格式)

两种配置方式可选:

  1. 仅给当前字段单独指定入参格式,不影响其他日期字段逻辑
import com.fasterxml.jackson.annotation.JsonFormat
import java.time.LocalDate

data class CreateRequest(
    @JsonFormat(pattern = "MM/dd/yyyy")
    val createDate: LocalDate,
    val accountId: Int
)
  1. 全局修改所有LocalDate的默认序列化、反序列化格式,在application.properties中添加配置即可
quarkus.jackson.local-date-format=MM/dd/yyyy

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:45:01