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;
}