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<br>
|
*
|
* @Description: <br>
|
* @Project: <br>
|
* @CreateDate: Created in 2020/4/3 11:41 <br>
|
* @Author: <a href="4345453@kidgrow.com">liuke</a>
|
*/
|
public class KidgrowDateValidator implements ConstraintValidator<DateValidator, Date> {
|
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;
|
}
|
}
|