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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java:出生日期转年龄

發(fā)布時(shí)間:2023/12/3 java 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java:出生日期转年龄 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
private int getAge(Date birthDay) {Calendar cal = Calendar.getInstance();//出生日期晚于當(dāng)前時(shí)間,無法計(jì)算if (cal.before(birthDay)) {throw new IllegalArgumentException("The birthDay is before Now.It's unbelievable!");}//當(dāng)前年份int yearNow = cal.get(Calendar.YEAR);//當(dāng)前月份int monthNow = cal.get(Calendar.MONTH);//當(dāng)前日期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);//計(jì)算整歲數(shù)int age = yearNow - yearBirth;if (monthNow <= monthBirth) {if (monthNow == monthBirth) {if (dayOfMonthNow < dayOfMonthBirth) {//當(dāng)前日期在生日之前,年齡減一age--;}} else {//當(dāng)前月份在生日之前,年齡減一age--;}}return age;}

?

https://blog.csdn.net/qq_44621483/article/details/108573019

?

?

程序記錄:

??通過輸入出生日期字符串,返回年齡

源碼展示:

public static int getAgeForBirthday(String birthday){//定義一個(gè)日期格式y(tǒng)yyy-MM-dd,將String轉(zhuǎn)為DateSimpleDateFormat simp = new SimpleDateFormat("yyyy-MM-dd");Date date = null;try {date = simp.parse(birthday);} catch (ParseException e) {e.printStackTrace();}//判斷該生日是否在當(dāng)前日期之前,設(shè)置一個(gè)初始值,表示輸入日期錯(cuò)誤if(date.after(new Date())){return -1;}//獲取當(dāng)前日歷對(duì)象中的年、月、日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轉(zhuǎn)為Calendar日歷對(duì)象,獲取生日的年、月、日nowc.setTime(date);//通過年月日計(jì)算該對(duì)象的年紀(jì)//先通過Year計(jì)算初步年齡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類型不能直接獲取時(shí)間信息,所以將其轉(zhuǎn)為Date類型,但獲取Date類方法獲取的只有毫秒為單位的時(shí)間,直接與當(dāng)前時(shí)間計(jì)算的到的是毫秒值,由于還要考慮當(dāng)前時(shí)間到出生日期間的閏年問題和月份天數(shù)不同等問題,還需要將Date類型轉(zhuǎn)為Calendar類型,Calendar類型可直接獲得當(dāng)前日期和指定日期的年月日,先通過獲取的年獲取大概的年齡,再通過月和日判斷當(dāng)前日期是否已經(jīng)過了生日由此對(duì)大概年齡減1。

?

?

?

Java 根據(jù)出生日期計(jì)算年齡

https://www.cnblogs.com/fuchuanzhipan1209/p/9596614.html

?

Java 根據(jù)出生日期計(jì)算年齡

1.把出生日期字符串轉(zhuǎn)換為日期格式。

1

2

3

4

public?static??Date parse(String strDate)?throws?ParseException {

????????SimpleDateFormat sdf =?new?SimpleDateFormat("yyyy-MM-dd");

????????return?sdf.parse(strDate);

????}

2.計(jì)算年齡

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)) {?//出生日期晚于當(dāng)前時(shí)間,無法計(jì)算

????????????throw?new?IllegalArgumentException(

????????????????????"The birthDay is before Now.It's unbelievable!");

????????}

????????int?yearNow = cal.get(Calendar.YEAR);??//當(dāng)前年份

????????int?monthNow = cal.get(Calendar.MONTH);??//當(dāng)前月份

????????int?dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH);?//當(dāng)前日期

????????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;???//計(jì)算整歲數(shù)

????????????if?(monthNow <= monthBirth) {

????????????if?(monthNow == monthBirth) {

????????????????if?(dayOfMonthNow < dayOfMonthBirth) age--;//當(dāng)前日期在生日之前,年齡減一

????????????}else{

????????????????age--;//當(dāng)前月份在生日之前,年齡減一

1

} }?return?age; }

3.執(zhí)行方法

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工具

?

?

?

?

?

?

?

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的Java:出生日期转年龄的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。