Java:出生日期转年龄
?
https://blog.csdn.net/qq_44621483/article/details/108573019
?
?
程序記錄:
??通過輸入出生日期字符串,返回年齡
源碼展示:
public static int getAgeForBirthday(String birthday){//定義一個日期格式yyyy-MM-dd,將String轉為DateSimpleDateFormat simp = new SimpleDateFormat("yyyy-MM-dd");Date date = null;try {date = simp.parse(birthday);} catch (ParseException e) {e.printStackTrace();}//判斷該生日是否在當前日期之前,設置一個初始值,表示輸入日期錯誤if(date.after(new Date())){return -1;}//獲取當前日歷對象中的年、月、日Calendar nowc = Calendar.getInstance();int nowYear = nowc.get(Calendar.YEAR);int nowMonth = nowc.get(Calendar.MONTH);int nowDay = nowc.get(Calendar.DAY_OF_MONTH);//將Date轉為Calendar日歷對象,獲取生日的年、月、日nowc.setTime(date);//通過年月日計算該對象的年紀//先通過Year計算初步年齡int year = nowYear-nowc.get(Calendar.YEAR);//通過Month和Day判斷是否過生日if(nowc.get(Calendar.MONTH)>nowMonth){return year-1;}if (nowc.get(Calendar.DAY_OF_MONTH)>nowDay){return year-1;}return year;}思路
??由于String類型不能直接獲取時間信息,所以將其轉為Date類型,但獲取Date類方法獲取的只有毫秒為單位的時間,直接與當前時間計算的到的是毫秒值,由于還要考慮當前時間到出生日期間的閏年問題和月份天數不同等問題,還需要將Date類型轉為Calendar類型,Calendar類型可直接獲得當前日期和指定日期的年月日,先通過獲取的年獲取大概的年齡,再通過月和日判斷當前日期是否已經過了生日由此對大概年齡減1。
?
?
?
Java 根據出生日期計算年齡
https://www.cnblogs.com/fuchuanzhipan1209/p/9596614.html
?
Java 根據出生日期計算年齡
1.把出生日期字符串轉換為日期格式。
| 1 2 3 4 | public?static??Date parse(String strDate)?throws?ParseException { ????????SimpleDateFormat sdf =?new?SimpleDateFormat("yyyy-MM-dd"); ????????return?sdf.parse(strDate); ????} |
2.計算年齡
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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--;//當前月份在生日之前,年齡減一 |
| 1 | } }?return?age; } |
3.執行方法
| 1 2 3 4 5 6 7 8 | public?static?void?main(String[] args) { ????????try?{ ??????????int??age = getAge(parse("1990-09-27"));???????????//由出生日期獲得年齡*** ??????????System.out.println("age:"+age); ????????}?catch?(Exception e) { ????????????e.printStackTrace(); ????????} ????} |
分類:?java工具
?
?
?
?
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的Java:出生日期转年龄的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 青海高原一株柳主要内容 青海高原一株柳主
- 下一篇: 正数和负数的定义 什么叫正数和负数