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