日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java:出生日期转年龄

發布時間:2023/12/3 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java:出生日期转年龄 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
private int getAge(Date birthDay) {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--;}}return age;}

?

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:出生日期转年龄的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。