goja-core/src/main/java/goja/core/kits/IdCardKit.java
private static boolean valiDate(int iYear, int iMonth, int iDate) {
        Calendar cal = Calendar.getInstance();
        int year = cal.get(Calendar.YEAR);
        int datePerMonth;
        if (iYear < MIN || iYear >= year) {
            return false;
        }
        if (iMonth < 1 || iMonth > 12) {
            return false;
        }
        switch (iMonth) {
            case 4:
            case 6:
            case 9:
            case 11:
                datePerMonth = 30;
                break;
            case 2:
                boolean dm = ((iYear % 4 == 0 && iYear % 100 != 0) || (iYear % 400 == 0))
                        && (iYear > MIN && iYear < year);
                datePerMonth = dm ? 29 : 28;
                break;
            default:
                datePerMonth = 31;
        }
        return (iDate >= 1) && (iDate <= datePerMonth);
    }
private static boolean valiDate(int iYear, int iMonth, int iDate) {
        Calendar cal = Calendar.getInstance();
        int year = cal.get(Calendar.YEAR);
        int datePerMonth;
        if (iYear < MIN || iYear >= year) {
            return false;
        }
        if (iMonth < 1 || iMonth > 12) {
            return false;
        }
        switch (iMonth) {
            case 4:
            case 6:
            case 9:
            case 11:
                datePerMonth = 30;
                break;
            case 2:
                boolean dm = ((iYear % 4 == 0 && iYear % 100 != 0) || (iYear % 400 == 0))
                        && (iYear > MIN && iYear < year);
                datePerMonth = dm ? 29 : 28;
                break;
            default:
                datePerMonth = 31;
        }
        return (iDate >= 1) && (iDate <= datePerMonth);
    }
private static boolean valiDate ( int iYear , int iMonth , int iDate ) { Calendar cal = Calendar . getInstance ( ) ; int year = cal . get ( Calendar . YEAR ) ; int datePerMonth ; if ( iYear < MIN || iYear >= year ) { return false ; } if ( iMonth < 1 || iMonth > 12 ) { return false ; } switch ( iMonth ) { case 4 : case 6 : case 9 : case 11 : datePerMonth = 30 ; break ; case 2 : boolean dm = ( ( iYear % 4 == 0 && iYear % 100 != 0 ) || ( iYear % 400 == 0 ) ) && ( iYear > MIN && iYear < year ) ; datePerMonth = dm ? 29 : 28 ; break ; default : datePerMonth = 31 ; } return ( iDate >= 1 ) && ( iDate <= datePerMonth ) ; }
验证小于当前日期 是否有效

@param iYear  待验证日期(年)
@param iMonth 待验证日期(月 1-12)
@param iDate  待验证日期(日)
@return 是否有效
验证小于当前日期 是否有效