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

为何FasterXML中@JsonFormat的YYYY-MM-dd模式将日期序列化为2024-12-31?

问题说明

数据库中某日期字段值为:

2023-12-31 23:59:59.907

使用FasterXML Jackson进行JSON序列化时,代码配置如下:

/**
 * Tariff end
 */
@JsonFormat(pattern = "YYYY-MM-dd")
@ApiModelProperty(notes = "tariff end date")
private Date endDate;

最终序列化结果为2024-12-31,而非预期的2023-12-31,请说明原因及解决办法。

原因分析

问题出在日期格式符的使用上:

  • YYYY代表周年(Week Year),即当前日期所在周对应的年份。2023年12月31日在ISO周历规则下属于2024年的第一周,因此Jackson会将其映射为2024年。
  • 我们实际需要的是公历年,对应的格式符是小写的yyyy。
解决办法

修改@JsonFormat注解的格式参数,将YYYY替换为yyyy:

/**
 * Tariff end
 */
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(notes = "tariff end date")
private Date endDate;

修改后重新序列化,即可得到正确的2023-12-31。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 15:07:10