forked from kidgrow-microservices-platform

zhaoxiaohao
2020-12-28 861200b968f21a748aa322635f55e48e79dafb1e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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;
    }
}