package com.kidgrow.common.utils; import com.kidgrow.common.annotation.DateValidator; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020
* * @Description:
* @Project:
* @CreateDate: Created in 2020/4/3 11:41
* @Author: liuke */ public class KidgrowDateValidator implements ConstraintValidator { private DateValidator dateValidator; @Override public void initialize(DateValidator constraintAnnotation) { this.dateValidator = constraintAnnotation; } @Override public boolean isValid(Date value, ConstraintValidatorContext context) { String pattern = dateValidator.pattern(); SimpleDateFormat df = new SimpleDateFormat(pattern); String myMinDate = dateValidator.minDate(); String myMaxDate = dateValidator.maxDate(); // 为空可以放过 if (value == null){ return true; } try { Date maxDate = null; Date minDate = null; if ("".equals(myMinDate)){ // 未设置最小时间 maxDate = df.parse(dateValidator.maxDate()); // compareTo方法, 1:后者大于前者;-1:后者小于前者;0:两个相同 return value.compareTo(maxDate) != 1; } else if ("".equals(myMaxDate)){ // 未设置最大时间 minDate = df.parse(dateValidator.minDate()); return value.compareTo(minDate) >= 0; } else { // 设置了最大时间和最小时间 maxDate = df.parse(dateValidator.maxDate()); minDate = df.parse(dateValidator.minDate()); return value.compareTo(maxDate) != 1 && value.compareTo(minDate) >= 0; } } catch (ParseException e) { e.printStackTrace(); } return false; } }