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

@DateTimeFormat注解格式化本地时间为HH:MM不生效返回HH:MM:SS

问题根源

你注解用错场景了。
@DateTimeFormat是Spring的入参绑定注解,只负责把请求里传入的时间字符串转换成LocalTime类型的字段值,完全不影响接口返回JSON时的序列化逻辑。接口返回时走的是JSON框架的默认序列化规则,LocalTime默认就会输出HH:mm:ss的完整时分秒格式,所以你加的这个注解根本管不到返回场景,自然达不到格式化出参的效果。

实现方式

根据项目用的JSON序列化框架选对应方案即可,SpringBoot默认用Jackson,优先参考前两个方案:

  • 单字段格式化
    在字段上补加Jackson的序列化格式注解,原来的@DateTimeFormat保留,用来处理入参转换,两个注解各司其职不冲突:
    @DateTimeFormat(pattern = HTConstants.TIME_FORMAT)
    @JsonFormat(pattern = "HH:mm")
    private LocalTime checkOutTime;
    
  • 全局统一格式化
    如果项目里所有LocalTime类型字段都需要返回HH:mm格式,不用逐字段加注解,直接配置Jackson的全局序列化规则:
    @Configuration
    public class TimeFormatConfig {
        @Bean
        public Jackson2ObjectMapperBuilderCustomizer jacksonTimeCustomizer() {
            return builder -> builder.serializerByType(LocalTime.class,
                    new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm")));
        }
    }
    
  • 如果项目用Fastjson做序列化
    把@JsonFormat换成Fastjson的对应注解即可:
    @JSONField(format = "HH:mm")
    private LocalTime checkOutTime;
    

小提示:如果配置了全局格式化规则,就不需要在普通字段上重复加格式注解了,字段上的注解优先级高于全局配置,有特殊格式需求的字段单独加注解即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 16:42:52