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博客

相关推荐
Moe4885 分钟前
合并Pdf、excel、图片、word为单个Pdf文件的工具类(技术点的选择与深度解析)
java·后端
Java水解6 分钟前
20个高级Java开发面试题及答案!
spring boot·后端·面试
Moe48810 分钟前
合并Pdf、excel、图片、word为单个Pdf文件的工具类(拿来即用版)
java·后端
oliveira-time20 分钟前
原型模式中的深浅拷贝
java·开发语言·原型模式
进阶的猿猴44 分钟前
easyExcel实现单元格合并
java·excel
小许学java1 小时前
MySQL-触发器
java·数据库·mysql·存储过程·触发器
JEECG低代码平台1 小时前
【2025/11】GitHub本月热度排名前十的开源Java项目
java·开源·github
百***86051 小时前
Spring BOOT 启动参数
java·spring boot·后端
跟着珅聪学java1 小时前
Spring Boot 中整合 MySQL 并打印 SQL 日志
java·spring boot
ᐇ9591 小时前
Java集合框架实战:HashMap与HashSet的妙用
java·开发语言