SpringBoot 时间格式校验问题

1. 背景

开发过程中,时间格式并非都是yyyy-MM-dd HH:mm:ss,有时候希望传入的参数为yyyy-MM-dd,或HH:mm:ss,对应着pgsql中的类型分别为timestamp, date,time。但是使用mybatis generator自动生成的文件中这这种类型都用Date对象,如果入参也是使用Date对象作为输入类型,yyyy-MM-dd HH:mm:ss的格式时能正常解析的,但是yyyy-MM-dd,或HH:mm:ss就会解析失败。

2. 问题

当前端输入的时间格式为yyyy-MM-dd,或HH:mm:ss,后端应该如何处理?

3. 解决方法

(1) 如果输入的时间类型为yyyy-MM-dd,则使用LocalDate类型;

(2) 如果输入的时间类型为HH:mm:ss,则使用LocalTime类型;

(3) 如果是yyyy-MM-dd HH:mm:ss,则使用Date或LocalDateTime(LocalDateTime格式还没有验证)

4. 代码

复制代码
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.Date;

/**
 * <p>
 * 广播播放配置信息
 * </p>
 *
 * @author mip
 * @since 2024-08-19
 */
@Getter
@Setter
@TableName("mip_audio_config")
@ApiModel(value = "MipAudioConfig对象", description = "广播播放配置信息")
public class MipAudioConfig implements Serializable {
    @ApiModelProperty("开始播放日期")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone ="GMT+8" )
    private LocalDate startDate;

    @ApiModelProperty("结束播放日期")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone ="GMT+8" )
    private LocalDate endDate;

    @ApiModelProperty("播放开始时间")
    @JsonFormat(pattern = "HH:mm:ss",timezone ="GMT+8" )
    private LocalTime startTime;

    @ApiModelProperty("播放结束时间")
    @JsonFormat(pattern = "HH:mm:ss",timezone ="GMT+8" )
    private LocalTime endTime;

    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone ="GMT+8" )
    private Date createTime;

}

5. 参考文献

SpringBoot日期时间出入参格式化-1:全注解方式参数处理_springboot报时间参数注解-CSDN博客

相关推荐
沛沛老爹5 分钟前
Web转AI架构篇:Agent Skills vs MCP-混合架构设计模式实战指南
java·前端·人工智能·架构·llm·rag
独自破碎E12 分钟前
Java的CMS垃圾回收流程
java·开发语言
oioihoii19 分钟前
C++线程编程模型演进:从Pthread到jthread的技术革命
java·开发语言·c++
醇氧40 分钟前
SqlLogInterceptor mybatis配置打印SQL
java·sql·mybatis
Elcker41 分钟前
JAVA-Web 项目研发中如何保持团队研发风格的统一
java·前端·javascript
a程序小傲1 小时前
京东Java面试被问:多活数据中心的流量调度和数据同步
java·开发语言·面试·职场和发展·golang·边缘计算
三金121381 小时前
Java定时任务Schedule详解及Cron表达式实践
java·开发语言
Coder_Boy_1 小时前
基于SpringAI的在线考试系统-数据库 表结构 & 完整外键依赖关系梳理
java·数据库·人工智能·软件工程
Wpa.wk2 小时前
性能测试 - 性能监控命令top,ps
java·经验分享·测试工具
Miss_Chenzr2 小时前
Springboot企业人事管理系统mi130(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·数据库·spring boot