spring boot中@Pattern校验String时间格式

记录一下在使用spring boot开发后端接口时遇到的一个问题。
我想在实体类中直接用注解验证日期时间格式,但前端传过来的是字符串,不是Date,所以刚开始用@Datetimeformat一直不生效。之后改用@Pattern

@Pattern

想验证时间日期字符串是否为“yyyy-MM-dd HH:mm:ss”格式的,利用正则表达式。
实体类中:

//实体类
@Data
public class Message {

	@NotNull(message = "开始时间不能为空")
    @Pattern(regexp = "^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))\\s+([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$",
            message = "时间格式应为:yyyy-MM-dd HH:mm:ss")
    private String start_time;

	//...
}

controller中:(注意要有@Valid)

    @PostMapping("setMessage")
    @ResponseBody
    public Result setMessage(@Valid Message message, BindingResult bindingResult) {
		//...
    }

@Datetimeformat

只能用来对Date类型的日期参数进行校验。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐