JAVA 根据身份证计算年龄的实现代码

下面一段代码给大家分享java根据身份证计算年龄的方法,具体代码如下所示:

birthDate = idCard.substring(6,10)+"-"+idCard.substring(10,12)+"-"+idCard.substring(12,14)
public static int getAgefromBirthTime(String birthTimeString){
 // 先截取到字符串中的年、月、日
 String strs[] = birthTimeString.trim().split("-");
 int selectYear = Integer.parseInt(strs[0]);
 int selectMonth = Integer.parseInt(strs[1]);
 int selectDay = Integer.parseInt(strs[2]);
 // 得到当前时间的年、月、日
 Calendar cal = Calendar.getInstance();
 int yearNow = cal.get(Calendar.YEAR);
 int monthNow = cal.get(Calendar.MONTH) + 1;
 int dayNow = cal.get(Calendar.DATE);
 // 用当前年月日减去生日年月日
 int yearMinus = yearNow - selectYear;
 int monthMinus = monthNow - selectMonth;
 int dayMinus = dayNow - selectDay;
 int age = yearMinus;
 if (yearMinus < 0) {// 选了未来的年份
  age = 0;
 } else if (yearMinus == 0) {// 同年的,要么为1,要么为0
  if (monthMinus < 0) {// 选了未来的月份
   age = 0;
  } else if (monthMinus == 0) {// 同月份的
   if (dayMinus < 0) {// 选了未来的日期
    age = 0;
   } else if (dayMinus >= 0) {
    age = 1;
   }
  } else if (monthMinus > 0) {
   age = 1;
  }
 } else if (yearMinus > 0) {
  if (monthMinus < 0) {// 当前月>生日月
  } else if (monthMinus == 0) {// 同月份的,再根据日期计算年龄
   if (dayMinus < 0) {
   } else if (dayMinus >= 0) {
    age = age + 1;
   }
  } else if (monthMinus > 0) {
   age = age + 1;
  }
 }
 return age;
}

下面在看下java根据出生日期获得年龄

public static int getAge(Date birthDay) throws Exception {
  Calendar cal = Calendar.getInstance();
  if (cal.before(birthDay)) {
   throw new IllegalArgumentException(
    "The birthDay is before Now.It's unbelievable!");
  }
  int yearNow = cal.get(Calendar.YEAR);
  int monthNow = cal.get(Calendar.MONTH);
  int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH);
  cal.setTime(birthDay);
  int yearBirth = cal.get(Calendar.YEAR);
  int monthBirth = cal.get(Calendar.MONTH);
  int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);
  int age = yearNow - yearBirth;
  if (monthNow <= monthBirth) {
   if (monthNow == monthBirth) {
    if (dayOfMonthNow < dayOfMonthBirth) age--;
   }else{
    age--;
   }
  }
  System.out.println("age:"+age);
  return age;
 }

总结

以上所述是小编给大家介绍的JAVA 根据身份证计算年龄,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • 身份证号码验证算法深入研究和Java实现

    做项目的时候需要对拿到的数据进行"清洗",比如剔除一些不可能存在的身份证号码.查阅了网上的身份证号码验证算法,自己也总结一下. (一)18身份证号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成. 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码. 1.地址码 表示编码对象常住户口所在县(市.旗.区)的行政区域划分代码,按GB/T2260的规定执行. 2.出生日期码 表示编码对象出生的年.月.日,按GB/T7408的规定执行,

  • java身份证验证代码实现

    复制代码 代码如下: <script> //验证身份证号方法 var test=function(idcard){ var Errors=new Array("验证通过!","身份证号码位数不对!","身份证号码出生日期超出范围或含有非法字符!","身份证号码校验错误!","身份证地区非法!"); var area={11:"北京",12:"天津",13:

  • Java简单验证身份证功能示例

    本文实例讲述了Java简单验证身份证功能.分享给大家供大家参考,具体如下: package org.cxy.csdn.example; import java.util.Calendar; import java.util.HashMap; import java.util.Map; import javax.xml.bind.Validator; /** * 身份证验证的工具(支持5位或18位省份证)<br/> * 身份证号码结构: * <ol> * <li>17位数

  • java实现百度云OCR文字识别 高精度OCR识别身份证信息

    本文为大家分享了java实现百度云OCR识别的具体代码,高精度OCR识别身份证信息,供大家参考,具体内容如下 1.通用OCR文字识别 这种OCR只能按照识别图片中的文字,且是按照行识别返回结果,精度较低. 首先引入依赖包: <dependency> <groupId>com.baidu.aip</groupId> <artifactId>java-sdk</artifactId> <version>4.6.0</version&

  • Java根据身份证号计算年龄,15位身份证号码转18位原理与操作示例

    本文实例讲述了Java根据身份证号计算年龄,15位身份证号码转18位.分享给大家供大家参考,具体如下: 第一代身份证:15位身份证号码的意义 15位身份证号码各位的含义: 1-2位省.自治区.直辖市代码: 3-4位地级市.盟.自治州代码: 5-6位县.县级市.区代码: 7-12位出生年月日,比如670401代表1967年4月1日,这是和18位号码的第一个区别: 13-15位为顺序号,其中15位男为单数,女为双数: 与18位身份证号的第二个区别:没有最后一位的校验码. 举例: 130503 670

  • Java随机生成身份证完整示例代码

    身份证算法实现 1.号码的结构 公民身份号码是特征组合码, 由十七位数字本体码和一位校验码组成. 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码  三位数字顺序码和一位数字校验码. 2.地址码(前六位数) 表示编码对象常住户口所在县(市.旗.区)的行政区划代码,按GB/T2260的规定执行. 3.出生日期码(第七位至十四位) 表示编码对象出生的年.月.日,按GB/T7408的规定执行,年.月.日代码之间不用分隔符. 4.顺序码(第十五位至十七位) 表示在同一地址码所标识的区域范围内,

  • Java常用正则表达式验证类完整实例【邮箱、URL、IP、电话、身份证等】

    本文实例讲述了Java常用正则表达式验证类.分享给大家供大家参考,具体如下: package com.fsti.icop.util.regexp; import java.util.regex.Matcher; import java.util.regex.Pattern; public final class RegExpValidatorUtils { /** * 验证邮箱 * * @param 待验证的字符串 * @return 如果是符合的字符串,返回 <b>true </b&g

  • JAVA 18位身份证号码校验码的算法

    public static char doVerify(String id) { char pszSrc[]=id.toCharArray(); int iS = 0; int iW[]={7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; char szVerCode[] = new char[]{'1','0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'}; int i; for(i=0;i

  • Java实现身份证号码验证源码示例分享

    整理文档,搜刮出一个Java实现身份证号码验证源码示例代码,稍微整理精简一下做下分享. package xxx; /** * Created by wdj on 2017/6/21. */ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Random; /** * 身份证验证的

  • java身份证合法性校验并提取身份证有效信息

    java身份证合法性校验并获取身份证号有效信息,供大家参考,具体内容如下 java身份证合法性校验 /**身份证前6位[ABCDEF]为行政区划数字代码(简称数字码)说明(参考<GB/T 2260-2007 中华人民共和国行政区划代码>): * 该数字码的编制原则和结构分析,它采用三层六位层次码结构,按层次分别表示我国各省(自治区,直辖市,特别行政区). * 市(地区,自治州,盟).县(自治县.县级市.旗.自治旗.市辖区.林区.特区). 数字码码位结构从左至右的含义是: 第一层为AB两位代码表

  • Java身份证验证方法实例详解

    Java身份证验证方法实例详解 身份证号码验证 1.号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码, 八位数字出生日期码,三位数字顺序码和一位数字校验码. 2.地址码(前六位数) 表示编码对象常住户口所在县(市.旗.区)的行政区划代码,按GB/T2260的规定执行. 3.出生日期码(第七位至十四位) 表示编码对象出生的年.月.日,按GB/T7408的规定执行,年.月.日代码之间不用分隔符. 4.顺序码(第十五位至十七位) 表示在同

随机推荐