Android 中判斷年齡是否在16歲以下(含16歲)及其方法的封裝使用
專案中有個需求:根據身份證號判斷做社保卡申領的人是否是16歲以下(含16歲)的未成年人,是的話,需要父母陪伴
我的實現思路:
就是通過身份證號碼先判斷出這個人是多少歲,然後在跟當前時間做對比,重要的一點是臨界時間的判斷,也就是剛好是16的差值,那就需要再通過判斷月份和日期來做判斷,是否符合條件
為了通用,我把方法封裝了一下,可以輸入年齡,然後判斷是否是在多少歲年齡一下,還可以設定是否包含當前年齡
核心程式碼如下:
1、獲取真實的年齡
/**
* 獲取真實的年齡
*
* @param idNum
* @return
*/
public static int getRealYear(String idNum) {
Calendar cal = Calendar.getInstance();
//當前年
int currentYear = cal.get(Calendar.YEAR);
//當前月
int currentMonth = (cal.get(Calendar.MONTH)) + 1;
//當前月的第幾天:即當前日
int currentDay = cal.get(Calendar.DAY_OF_MONTH);
int birthYear = 0;
int birthMonth = 0;
int birthDay = 0;
int realYear = 0;
if (!TextUtils.isEmpty(idNum)) {
String birthDate = idNum.substring(6, 14);
if (!TextUtils.isEmpty(birthDate) && birthDate.length() == 8) {
birthYear = Integer.valueOf(birthDate.substring(0, 4));
birthMonth = Integer.valueOf(birthDate.substring(4, 6));
birthDay = Integer.valueOf(birthDate.substring(6, 8));
}
realYear = currentYear - birthYear;
if (birthMonth > currentMonth) {
realYear = realYear - 1;
} else if (birthMonth == currentMonth) {
if (birthDay > currentDay) {
realYear = realYear - 1;
} else {
realYear = realYear;
}
} else {
realYear = realYear;
}
}
return realYear;
}
2、判斷是否小於或者等於當前專案中規定的年齡
/**
* 判斷是否小於或者等於當前age的年齡
*
* @param age
* @return
*/
public static boolean isChildUnderTargetAge(String idNum, int age, boolean isIncludeAge) {
int realYear = getRealYear(idNum);
if (isIncludeAge) {
if (realYear <= age) {
return true;
} else {
return false;
}
} else {
if (realYear < age) {
return true;
} else {
return false;
}
}
}
3、符合16歲以下(含16歲)
/**
* 判斷是否 是 > 2002年出生的 就是符合16歲以下(含16歲)
*
* @param birthDay
* @return
*/
public static boolean isChildUnder16(String birthDay) {
return isChildUnderTargetAge(birthDay, 16, true);
}
4、程式碼中呼叫
boolean isChildUnder16 = IdcardUtils.isChildUnder16(mBean.sfzh);
相關文章
- 39歲的微軟劍指16歲的谷歌微軟谷歌
- 英國黑客平均年齡17歲黑客
- 騰訊財報披露新資料 16歲以下使用者遊戲付費佔3.2%遊戲
- CIRP:美國iPhone使用者中18-24歲、35-44歲年齡段13%會在1年內換新iPhone
- Twitter開始封殺13歲以下使用者賬號 響應歐盟GDPR
- 程式設計師與年齡:四十歲普通開發、三十五歲首席架構、三十歲基層Leader程式設計師架構
- Android判斷服務是否在執行Android
- 判斷某過程是否在執行的方法
- 判斷是否在微信瀏覽器中瀏覽器
- Android 微信支付 微信是否安裝判斷Android
- 一個 28 歲大齡青年的 IT 路
- 那些30歲以下的知名應用開發者
- PHP 判斷一個字元是否在字串中PHP字元字串
- Array · 判斷某元素是否在陣列中陣列
- 調研資料:美國35歲以下玩家對含廣告的遊戲接受程度更高遊戲
- Android 判斷當前的介面是否是桌面的方法Android
- 在html頁面中判斷本地app是否安裝並開啟HTMLAPP
- 【Android】判斷某個AP是否在系統中存在(PackageManager與PackageInfo)AndroidPackage
- Wix安裝程式中判斷是否安裝的.net framwork 4.5
- JS判斷字串是否包含某字串 indexOf()方法使用JS字串Index
- Android 判斷網路是否正常Android
- android判斷手機是否rootAndroid
- postgresql判斷是否為數字的方法SQL
- 判斷物件是否相等的方法,==與 isEqual物件
- 在JavaScript中判斷整型的N種方法JavaScript
- 判斷python字典中key是否存在的兩種方法Python
- CEDEC:調查顯示在日本從事遊戲開發者多為男性 年齡在34歲左右遊戲開發
- 判斷物件是否在視線內物件
- Android判斷當前裝置是否設定了代理Android
- Android WebView播放flash(判斷是否安裝flash外掛)AndroidWebView
- ESA:電子遊戲玩家的平均年齡範圍為35-44歲遊戲
- 年僅16歲,攻擊微軟、三星、英偉達的幕後主使浮出水面微軟
- Android 用ping的方法判斷當前網路是否可用Android
- golang中判斷兩個slice是否相等與判斷值下的 陣列是否相等Golang陣列
- 使用JavaScript判斷使用者是否為手機裝置JavaScript
- JavaScript中判斷物件是否屬於Array型別的4種方法及其背後的原理與侷限性JavaScript物件型別
- js判斷本地是否安裝appJSAPP
- 如何判斷一個物件是否在指定物件的原型鏈中物件原型