/** * 验证15位身份证的合法性,该方法验证不准确,最好是将15转为18位后再判断,该类中已提供。 *  * @param idcard * @return */  public boolean isValidate15Idcard(String idcard) {  // 非15位为假  if (idcard.length() != 15) {  return false;  }  // 是否全都为数字  if (isDigital(idcard)) {  String provinceid = idcard.substring(0, 2);  String birthday = idcard.substring(6, 12);  int year = Integer.parseInt(idcard.substring(6, 8));  int month = Integer.parseInt(idcard.substring(8, 10));  int day = Integer.parseInt(idcard.substring(10, 12));  // 判断是否为合法的省份  boolean flag = false;  for (String id : cityCode) {  if (id.equals(provinceid)) {  flag = true;  break;  }  }  if (!flag) {  return false;  }  // 该身份证生出日期在当前日期之后时为假  Date birthdate = null;  try {  birthdate =  TimeUtils.parseDate(birthday, "yyMMdd");} catch (ParseException e) {  logger.error("",e);}  if (birthdate == null || new Date().before(birthdate)) {  return false;  }  // 判断是否为合法的年份  GregorianCalendar curDay = new GregorianCalendar();  int curYear = curDay.get(Calendar.YEAR);  int year2bit = Integer.parseInt(String.valueOf(curYear)  .substring(2));  // 判断该年份的两位表示法,小于50的和大于当前年份的,为假  if ((year < 50 && year > year2bit)) {  return false;  }  // 判断是否为合法的月份  if (month < 1 || month > 12) {  return false;  }  // 判断是否为合法的日期  boolean mflag = false;  curDay.setTime(birthdate); // 将该身份证的出生日期赋于对象curDay  switch (month) {  case 1:  case 3:  case 5:  case 7:  case 8:  case 10:  case 12:  mflag = (day >= 1 && day <= 31);  break;  case 2: // 公历的2月非闰年有28天,闰年的2月是29天。  if (curDay.isLeapYear(curDay.get(Calendar.YEAR))) {  mflag = (day >= 1 && day <= 29);  } else {  mflag = (day >= 1 && day <= 28);  }  break;  case 4:  case 6:  case 9:  case 11:  mflag = (day >= 1 && day <= 30);  break;  }  if (!mflag) {  return false;  }  } else {  return false;  }  return true;  }  

15位身份证号的校验相关推荐

  1. mysql获取18位和15位身份证号中的出生日期、年龄

    18位身份证号码 select cast(substring(idno,7,8) as date) as 出生日期,2022-substring(idno,7,4) as age from table ...

  2. 15位身份证号和18位身份证号截取生日

    CASE WHEN T1.IDTYPE=01 AND LENGTH(TRIM(T1.IDNO))=15 THEN '19'||SUBSTR(T1.IDNO,7,6)WHEN T1.IDTYPE=01 ...

  3. 15位身份证号转18位

    '这是根据csdn上找到的java的源码改的 'Enjoy it     Public Function Old2New(ByVal OldID As String) As String        ...

  4. mysql根据严格校验15位和18位身份证号是否有效的自定义函数

    验证18位身份证有效性的规则: 1.长度: 2.区划编码: 3.出生日期: 4.最后一位验证: 第一步:对身份证做去空处理: 第二步:对15位身份证号进行验证: 第三步:对18位身份证进行验证: 最后 ...

  5. js根据15,18位身份证号获取生日与性别

    15位身份证号:第6.7位为年份,8.9位为月份,10.11为日.最后一位为性别,男为奇数,女为偶数.  18位身份证号:第6.7.8.9位为年份,10.11位为月份,12.13为日.最后一位为性别, ...

  6. Excel提取18位/15位身份证出生日期②

    问题场景 从user表中的身份信息中提取用户的出生日期: 以下方法也可适用于提取其他数据,不仅是身份证信息: 以下图中数据都为测试数据,不具备真实性! 场景一 user表中的18位身份证,提取出生日期 ...

  7. java代码实现15位身份证号码升级到18位

    转载网址   点击打开链接 转载一份作为记录,真心不错.受教! 18位身份证号码的组成: 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字 ...

  8. 身份证校验(//身份证号合法性验证 //支持15位和18位身份证号//支持地址编码、出生日期、校验位验证)

    window.checkIdNumber=(function () {var vcity = {11: "北京", 12: "天津", 13: "河北 ...

  9. js 身份证精确校验(支持15位和18位身份证号 )

    js 校验方法 //身份证号合法性验证 //支持15位和18位身份证号 //支持地址编码.出生日期.校验位验证 function IdentityCode(code){var city={11:&qu ...

最新文章

  1. Python网络爬虫笔记:下载、分析京东P20销售数据
  2. linux获取目标主机shell,expect案例-批量获取主机并分发密钥
  3. Java 洛谷 P1914 小书童——密码
  4. 谈判如何在博弈中获得更多_读后感--《谈判--如何在博弈中获得更多》
  5. match_phrase搜不出来,怎么办?
  6. python进阶(第三章1) 字典
  7. 2016-2017-2学期《程序设计与数据结构》教学进程
  8. Lambda 表达式详解~Streams API~规约操作
  9. c语言优先级大全,C语言运算符及其优先级汇总表口诀
  10. 转lua解析脚本过程中的关键数据结构介绍
  11. “第八届吴文俊人工智能科学技术奖”揭晓,AI大佬们都说了什么?
  12. C#移除对象中的属性(model类或集合等)JObject
  13. Selenium webdriver实现原理
  14. dll文件编辑器(Resource Hacker)下载
  15. 开源物联网平台建设、参考解决方案
  16. LeetCode笔记
  17. DXP2004生成PCB不显示连线
  18. php中empty检测非空,php empty() 检查一个变量是否为空
  19. 基本农田卫星地图查询_谷歌地图打不开?试试这个替代网站,街景功能很好用!...
  20. HDU 5037 贪心

热门文章

  1. Lizard Era: Beginning
  2. 将MBR分区转换为GPT分区后安装GHO镜像
  3. 智能OCR文字识别训练平台
  4. OpenAI居然能自动写论文?导师直言我都犯难了...
  5. movie 趣味电影清单
  6. 维也纳登顶全球城市生活质量榜榜首,上海列第103位
  7. heroku从入门到入土
  8. 记一次npm run build:prod打包失败的处理方法
  9. 干货 | 携程APP Native/RN内嵌Flutter UI混合开发实践和探索
  10. linux中特殊的设备(/dev/zeo,/dev/null,/dev/unrandom,/dev/random)