All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.buli_home.utils.common.Validator Maven / Gradle / Ivy

There is a newer version: 0.3.1
Show newest version
package cn.buli_home.utils.common;


import cn.buli_home.utils.constant.RegexConstant;
import cn.buli_home.utils.date.DateUtils;

import java.time.Year;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 字段验证器
 */
public class Validator {

    /**
     * 生日
     */
    public final static Pattern BIRTHDAY = Pattern.compile(RegexConstant.BIRTHDAY);


    /**
     * 验证是否为生日
* 只支持以下几种格式: *
    *
  • yyyyMMdd
  • *
  • yyyy-MM-dd
  • *
  • yyyy/MM/dd
  • *
  • yyyy.MM.dd
  • *
  • yyyy年MM月dd日
  • *
* * @param value 值 * @return 是否为生日 */ public static boolean isBirthday(CharSequence value) { final Matcher matcher = BIRTHDAY.matcher(value); if (matcher.find()) { int year = Integer.parseInt(matcher.group(1)); int month = Integer.parseInt(matcher.group(3)); int day = Integer.parseInt(matcher.group(5)); return isBirthday(year, month, day); } return false; } /** * 验证是否为生日 * * @param year 年,从1900年开始计算 * @param month 月,从1开始计数 * @param day 日,从1开始计数 * @return 是否为生日 */ public static boolean isBirthday(int year, int month, int day) { // 验证年 int thisYear = NumberUtils.parseInt(DateUtils.format(new Date(), "yyyy")); if (year < 1900 || year > thisYear) { return false; } // 验证月 if (month < 1 || month > 12) { return false; } // 验证日 if (day < 1 || day > 31) { return false; } // 检查几个特殊月的最大天数 if (day == 31 && (month == 4 || month == 6 || month == 9 || month == 11)) { return false; } if (month == 2) { // 在2月,非闰年最大28,闰年最大29 return day < 29 || (day == 29 && Year.isLeap(year)); } return true; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy