JAVA 根據(jù)身份證計(jì)算年齡的實(shí)現(xiàn)代碼
更新時間:2018年05月10日 14:19:27 作者:HrlSnow
這篇文章主要介紹了JAVA 根據(jù)身份證計(jì)算年齡的實(shí)例代碼及java根據(jù)出生日期獲得年齡的方法,代碼簡單易懂,非常不錯,具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
下面一段代碼給大家分享java根據(jù)身份證計(jì)算年齡的方法,具體代碼如下所示:
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]); // 得到當(dāng)前時間的年、月、日 Calendar cal = Calendar.getInstance(); int yearNow = cal.get(Calendar.YEAR); int monthNow = cal.get(Calendar.MONTH) + 1; int dayNow = cal.get(Calendar.DATE); // 用當(dāng)前年月日減去生日年月日 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) {// 當(dāng)前月>生日月 } else if (monthMinus == 0) {// 同月份的,再根據(jù)日期計(jì)算年齡 if (dayMinus < 0) { } else if (dayMinus >= 0) { age = age + 1; } } else if (monthMinus > 0) { age = age + 1; } } return age; }
下面在看下java根據(jù)出生日期獲得年齡
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; }
總結(jié)
以上所述是小編給大家介紹的JAVA 根據(jù)身份證計(jì)算年齡,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
您可能感興趣的文章:
- Java根據(jù)身份證號計(jì)算年齡,15位身份證號碼轉(zhuǎn)18位原理與操作示例
- Java實(shí)現(xiàn)身份證號碼驗(yàn)證源碼示例分享
- 身份證號碼驗(yàn)證算法深入研究和Java實(shí)現(xiàn)
- JAVA 18位身份證號碼校驗(yàn)碼的算法
- java身份證合法性校驗(yàn)工具類實(shí)例代碼
- Java使用阿里云接口進(jìn)行身份證實(shí)名認(rèn)證的示例實(shí)現(xiàn)
- Java簡單驗(yàn)證身份證功能示例
- Java身份證驗(yàn)證方法實(shí)例詳解
- java身份證合法性校驗(yàn)并提取身份證有效信息
- java 根據(jù)身份證號碼判斷出生日期、性別、年齡的示例
相關(guān)文章
關(guān)于Android觸摸事件分發(fā)的原理詳析
觸摸事件分發(fā)機(jī)制一直以來都是Android中比較重要的一大塊,自定義view,各種復(fù)雜的自定義手勢交互都與觸摸事件分發(fā)機(jī)制關(guān)系密,下面這篇文章主要給大家介紹了關(guān)于Android觸摸事件分發(fā)原理的相關(guān)資料,需要的朋友可以參考下2022-01-01Java字符串拼接+和StringBuilder的比較與選擇
Java 提供了兩種主要的方式:使用 "+" 運(yùn)算符和使用 StringBuilder 類,本文主要介紹了Java字符串拼接+和StringBuilder的比較與選擇,感興趣的可以了解一下2023-10-10Java實(shí)現(xiàn)FTP文件的上傳和下載功能的實(shí)例代碼
FTP 是File Transfer Protocol(文件傳輸協(xié)議)的英文簡稱,而中文簡稱為“文傳協(xié)議”。接下來通過本文給大家實(shí)例講解Java實(shí)現(xiàn)FTP文件的上傳和下載功能,需要的的朋友一起看看吧2016-11-11Spring Boot接口設(shè)計(jì)防篡改、防重放攻擊詳解
這篇文章主要給大家介紹了關(guān)于Spring Boot接口設(shè)計(jì)防篡改、防重放攻擊的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Springboot mybais配置多數(shù)據(jù)源過程解析
這篇文章主要介紹了Springboot+mybais配置多數(shù)據(jù)源過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03