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

Spring Hibernate中@JsonFormat设Asia/Kolkata时区12pm转00am问题

问题根源

你遇到的转换错误是时间格式Pattern的小时标识符使用错误导致的:
@JsonFormat注解中你使用的hh是12小时制的小时标识符,取值范围是1-12,在没有配置上下午标识的情况下,12点会被默认识别为0点,就会出现你遇到的12:30被转成00:30的问题。

解决方案

方案1:切换为24小时制格式(最常用)

把Pattern里的hh替换为HH,HH是24小时制的小时标识符,取值范围0-23,不需要上下午标识就能正确解析。
修改后的注解代码如下:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy HH:mm:ss", timezone = "Asia/Kolkata")
private Timestamp startDateTime;

方案2:保留12小时制+补充上下午标识

如果你的业务确实需要使用12小时制的时间格式,需要在Pattern里加上a用来匹配上下午标识(AM/PM),同时要求入参的时间字符串带上对应的上下午标识,比如25-10-2021 12:30:00 PM。
修改后的注解代码如下:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy hh:mm:ss a", timezone = "Asia/Kolkata")
private Timestamp startDateTime;

注意事项

  • 确认你接收的入参时间格式和Pattern完全匹配,避免出现解析异常
  • 时区配置要和入参时间的所属时区保持一致,避免出现时差问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:24:04