日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

通过身份证号码获取出生日期、性别、年龄

發(fā)布時間:2023/12/29 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过身份证号码获取出生日期、性别、年龄 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
/*** 通過身份證號碼獲取出生日期、性別、年齡** @param certificateNo* @return 返回的出生日期格式:1990-01-01 性別格式:F-女,M-男*/public static Map<String, String> getBirAgeSex(String certificateNo) {String birthday = "";String age = "";Integer sex = 0;//判斷身份證號是否合法Boolean judgeId = judgeId(certificateNo);if (judgeId == false) {return new HashMap<String, String>();}int year = Calendar.getInstance().get(Calendar.YEAR);char[] number = certificateNo.toCharArray();boolean flag = true;//判斷字符是否為數(shù)字if (number.length == 15) {for (int x = 0; x < number.length; x++) {if (!flag) {return new HashMap<String, String>();}flag = Character.isDigit(number[x]);}} else if (number.length == 18) {for (int x = 0; x < number.length - 1; x++) {if (!flag) {return new HashMap<String, String>();}flag = Character.isDigit(number[x]);}}//分別獲取年月日 性別 年齡if (flag && certificateNo.length() == 15) {birthday = "19" + certificateNo.substring(6, 8) + "-"+ certificateNo.substring(8, 10) + "-"+ certificateNo.substring(10, 12);sex = Integer.parseInt(certificateNo.substring(certificateNo.length() - 3, certificateNo.length())) % 2 == 0 ? 2 : 1;age = (year - Integer.parseInt("19" + certificateNo.substring(6, 8))) + "";} else if (flag && certificateNo.length() == 18) {birthday = certificateNo.substring(6, 10) + "-"+ certificateNo.substring(10, 12) + "-"+ certificateNo.substring(12, 14);sex = Integer.parseInt(certificateNo.substring(certificateNo.length() - 4, certificateNo.length() - 1)) % 2 == 0 ? 2 : 1;age = (year - Integer.parseInt(certificateNo.substring(6, 10))) + "";}Map<String, String> map = new HashMap<String, String>();map.put("birthday", birthday);map.put("age", age);map.put("sex", sex.toString());return map;}/*** 根據(jù)身份證號判斷性別** @param idNumber* @return*/public static Integer judgeGender(String idNumber) throws IllegalArgumentException {System.out.println(idNumber.length());if (idNumber.length() != 18 && idNumber.length() != 15) {throw new IllegalArgumentException("身份證號長度錯誤");}int gender = 0;if (idNumber.length() == 18) {//如果身份證號18位,取身份證號倒數(shù)第二位char c = idNumber.charAt(idNumber.length() - 2);gender = Integer.parseInt(String.valueOf(c));} else {//如果身份證號15位,取身份證號最后一位char c = idNumber.charAt(idNumber.length() - 1);gender = Integer.parseInt(String.valueOf(c));}System.out.println("gender = " + gender);if (gender % 2 == 1) {return 1;} else {return 2;}}/*** 根據(jù)身份證號計算年齡** @param idCard* @return*/public static Integer countAge(String idCard) {//判斷身份證號是否合法Boolean judgeId = judgeId(idCard);if (judgeId == false) {return 0;}//截取身份證中出行人出生日期中的年、月、日Integer personYear = Integer.parseInt(idCard.substring(6, 10));Integer personMonth = Integer.parseInt(idCard.substring(10, 12));Integer personDay = Integer.parseInt(idCard.substring(12, 14));Calendar cal = Calendar.getInstance();// 得到當前時間的年、月、日Integer yearNow = cal.get(Calendar.YEAR);Integer monthNow = cal.get(Calendar.MONTH) + 1;Integer dayNow = cal.get(Calendar.DATE);// 用當前年月日減去生日年月日Integer yearMinus = yearNow - personYear;Integer monthMinus = monthNow - personMonth;Integer dayMinus = dayNow - personDay;Integer age = yearMinus + 1; //先大致賦值if (yearMinus == 0) { //出生年份為當前年份age = 0;} else { //出生年份大于當前年份if (monthMinus < 0) {//出生月份小于當前月份時,還沒滿周歲age = age - 1;}if (monthMinus == 0) {//當前月份為出生月份時,判斷日期if (dayMinus < 0) {//出生日期小于當前月份時,沒滿周歲age = age - 1;}}}System.out.println(age);return age;}// 判斷身份證號是否合法public static Boolean judgeId(String id) {Boolean result = true;// 長度不等于 18 位if (id.length() != 18) {return false;}// 系數(shù)算法String tempId = getStr(id, 0, 16);int[] coeff = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};char[] end = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};int sum = 0;for (int i = 0; i < tempId.length(); i++) {int bye = tempId.charAt(i) - '0';sum += bye * coeff[i];}sum %= 11;if (end[sum] != getStr(id, 17, 17).charAt(0)) {result = false;}return result;}// 截取字符串的方法public static String getStr(String str, int a, int b) {b++;return str.substring(a, b);}

總結

以上是生活随笔為你收集整理的通过身份证号码获取出生日期、性别、年龄的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品久久久久一区二区三区 | 国产精品美女www | 一本大道久久a久久精二百 琪琪色在线视频 | www.激情| 午夜影院在线观看 | 亚洲蜜臀av乱码久久精品蜜桃 | 成人免费区一区二区三区 | 夜夜嗨av色一区二区不卡 | 天天艹夜夜艹 | 男女网站在线观看 | 男人天堂av在线播放 | 加勒比综合 | 久久久久久久久久久91 | 国产视频观看 | 国产精品亚洲成在人线 | 久久精品视屏 | 欧美第一页在线 | 天堂伊人 | 名人明星三级videos | 狠狠干影视 | 国产老妇视频 | 久久久激情视频 | 日韩欧美精品久久 | 一区二区三区在线观 | 伊人网视频在线 | 男人的天堂在线 | 国产男女视频在线观看 | 国内少妇毛片视频 | 色亚洲成人 | 亚色av| 亚洲美女激情视频 | 精品熟妇视频一区二区三区 | 欧美精品一区视频 | 97操碰 | 久久男| 成人在线免费播放 | 亚洲在线免费视频 | 国产精品久久久久久中文字 | 亚洲精品6| 日本一二三区不卡 | 久久国产精品无码一区二区 | 亚洲欧美日韩视频一区 | 女性女同性aⅴ免费观女性恋 | 夜间福利在线 | 美女搡bbb又爽又猛又黄www | 国产成人精品片 | 欧美成在线 | 超薄肉色丝袜一区二区 | 美色视频 | 天堂网在线最新版www中文网 | 亚洲欧美中文日韩在线v日本 | av亚洲在线 | 久操中文| 久久涩| 国产精品69久久久久 | 高清成人 | 琪琪色在线视频 | www.88av| 亚洲av成人精品毛片 | 日本人妖xxxx| 黄色18网站 | 国产女同91疯狂高潮互磨 | 91麻豆精品国产午夜天堂 | 色多多视频在线 | 91少妇丨porny丨| 欧美日韩一区二区区别是什么 | 天天上天天干 | 污站在线观看 | 超在线视频 | 性色视频在线观看 | 日本久久成人 | 国产日韩在线观看一区 | 天堂av官网 | 久草影视在线观看 | 中文字幕在线2018 | 68日本xxxxxⅹxxx59 | 中文字幕亚洲色图 | 国产成人精品一区在线播放 | 亚洲性网| 2019日韩中文字幕 | 中文字幕 欧美激情 | 亚洲欧美在线视频 | 波多野结衣视频网址 | 日韩视频中文 | 美女av在线免费观看 | 久爱视频在线 | 日韩网站免费观看高清 | 三级全黄的视频 | 国产激情视频网站 | 国产欧美久久久精品免费 | www.日韩.com | 樱花电影最新免费观看国语版 | 国产精选自拍 | 天天狠狠 | 中文字幕第八页 | 一区二区三区免费看视频 | 一区二区日韩av | 精品国产三级片在线观看 | 艳妇臀荡乳欲伦交换在线看 |