15位身份证号的校验
/** * 验证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位身份证号的校验相关推荐
- mysql获取18位和15位身份证号中的出生日期、年龄
18位身份证号码 select cast(substring(idno,7,8) as date) as 出生日期,2022-substring(idno,7,4) as age from table ...
- 15位身份证号和18位身份证号截取生日
CASE WHEN T1.IDTYPE=01 AND LENGTH(TRIM(T1.IDNO))=15 THEN '19'||SUBSTR(T1.IDNO,7,6)WHEN T1.IDTYPE=01 ...
- 15位身份证号转18位
'这是根据csdn上找到的java的源码改的 'Enjoy it Public Function Old2New(ByVal OldID As String) As String ...
- mysql根据严格校验15位和18位身份证号是否有效的自定义函数
验证18位身份证有效性的规则: 1.长度: 2.区划编码: 3.出生日期: 4.最后一位验证: 第一步:对身份证做去空处理: 第二步:对15位身份证号进行验证: 第三步:对18位身份证进行验证: 最后 ...
- js根据15,18位身份证号获取生日与性别
15位身份证号:第6.7位为年份,8.9位为月份,10.11为日.最后一位为性别,男为奇数,女为偶数. 18位身份证号:第6.7.8.9位为年份,10.11位为月份,12.13为日.最后一位为性别, ...
- Excel提取18位/15位身份证出生日期②
问题场景 从user表中的身份信息中提取用户的出生日期: 以下方法也可适用于提取其他数据,不仅是身份证信息: 以下图中数据都为测试数据,不具备真实性! 场景一 user表中的18位身份证,提取出生日期 ...
- java代码实现15位身份证号码升级到18位
转载网址 点击打开链接 转载一份作为记录,真心不错.受教! 18位身份证号码的组成: 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字 ...
- 身份证校验(//身份证号合法性验证 //支持15位和18位身份证号//支持地址编码、出生日期、校验位验证)
window.checkIdNumber=(function () {var vcity = {11: "北京", 12: "天津", 13: "河北 ...
- js 身份证精确校验(支持15位和18位身份证号 )
js 校验方法 //身份证号合法性验证 //支持15位和18位身份证号 //支持地址编码.出生日期.校验位验证 function IdentityCode(code){var city={11:&qu ...
最新文章
- Python网络爬虫笔记:下载、分析京东P20销售数据
- linux获取目标主机shell,expect案例-批量获取主机并分发密钥
- Java 洛谷 P1914 小书童——密码
- 谈判如何在博弈中获得更多_读后感--《谈判--如何在博弈中获得更多》
- match_phrase搜不出来,怎么办?
- python进阶(第三章1) 字典
- 2016-2017-2学期《程序设计与数据结构》教学进程
- Lambda 表达式详解~Streams API~规约操作
- c语言优先级大全,C语言运算符及其优先级汇总表口诀
- 转lua解析脚本过程中的关键数据结构介绍
- “第八届吴文俊人工智能科学技术奖”揭晓,AI大佬们都说了什么?
- C#移除对象中的属性(model类或集合等)JObject
- Selenium webdriver实现原理
- dll文件编辑器(Resource Hacker)下载
- 开源物联网平台建设、参考解决方案
- LeetCode笔记
- DXP2004生成PCB不显示连线
- php中empty检测非空,php empty() 检查一个变量是否为空
- 基本农田卫星地图查询_谷歌地图打不开?试试这个替代网站,街景功能很好用!...
- HDU 5037 贪心
热门文章
- Lizard Era: Beginning
- 将MBR分区转换为GPT分区后安装GHO镜像
- 智能OCR文字识别训练平台
- OpenAI居然能自动写论文?导师直言我都犯难了...
- movie 趣味电影清单
- 维也纳登顶全球城市生活质量榜榜首,上海列第103位
- heroku从入门到入土
- 记一次npm run build:prod打包失败的处理方法
- 干货 | 携程APP Native/RN内嵌Flutter UI混合开发实践和探索
- linux中特殊的设备(/dev/zeo,/dev/null,/dev/unrandom,/dev/random)