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);
相關文章
- 寫在臨近40歲的年齡
- 2000年,2010年和2019年美國16歲以下人口的種族差異
- 騰訊財報披露新資料 16歲以下使用者遊戲付費佔3.2%遊戲
- Steam的16歲生日,蛋糕沒往年好吃了
- CIRP:美國iPhone使用者中18-24歲、35-44歲年齡段13%會在1年內換新iPhone
- 福布斯:2020年中國30歲以下精英榜
- 福布斯中國:2019年度30歲以下精英榜
- Android 微信支付 微信是否安裝判斷Android
- 全球退休年齡一覽:最低為47歲
- 福布斯:2018年30歲以下CEO排行榜
- 程式設計師與年齡:四十歲普通開發、三十五歲首席架構、三十歲基層Leader程式設計師架構
- 《財富》:2020年中國40位40歲以下的商界精英
- Android判斷當前裝置是否設定了代理Android
- 胡潤:2020年30歲以下創業領袖 最年輕上榜者僅21歲創業
- PHP 判斷一個字元是否在字串中PHP字元字串
- Array · 判斷某元素是否在陣列中陣列
- Twitter開始封殺13歲以下使用者賬號 響應歐盟GDPR
- Maxis:《模擬人生4》玩家60%是16-24歲女性
- Android中Retrofit的封裝使用Android封裝
- 美國人口普查局:2018年全美人口年齡中位數上升至38.2歲 美國已有一半人口年齡超過38歲
- 判斷Linux系統是否被黑的方法Linux
- postgresql判斷是否為數字的方法SQL
- 幽默:研究表明每日冥想可延緩大腦衰老,41歲的大腦年齡為33歲 - medicalxpress
- 德銀:美國購房者中位數年齡延至47歲
- android判斷狀態列是否可見Android
- Ofcom:英國大約16%的三四歲兒童觀看TikTok內容
- 《財富》:2018年“全球40位40歲以下商界精英”
- 研究表明55歲數是當領導的黃金年齡
- Python_16 配置檔案與封裝Python封裝
- js判斷checkbox是否選中JS
- JavaScript中判斷物件是否屬於Array型別的4種方法及其背後的原理與侷限性JavaScript物件型別
- 判斷是否是陣列的幾種方法陣列
- JS判斷物件是否為空物件的方法JS物件
- PHP 使用 version_compare () 函式判斷含符號數值是否在某一區間內PHP函式符號
- golang中判斷兩個slice是否相等與判斷值下的 陣列是否相等Golang陣列
- 透過日誌判斷 Uno Platform 是否在 X11 使用 OpenGL 渲染加速的方法Platform
- 《福布斯》:2018年亞洲30歲以下傑出青年 中國上榜59人
- 如何判斷sql中的索引是否生效SQL索引