java跨年

编程入门 行业动态 更新时间:2024-10-23 15:23:58

<a href=https://www.elefans.com/category/jswz/34/1770091.html style=java跨年"/>

java跨年

今天在需要实现一个计算年龄的功能,在网上查了好久,现成的方法都不支持跨年的情况。所以就改造了一下。

[code] /**

*

* @param birthDay 出生日期

* @param time 统计时间

* @return

* @throws Exception

*/

public int getAge(Date birthDay,Calendar time) throws Exception {

Calendar cal = Calendar.getInstance();

if (cal.before(birthDay)) {

throw new IllegalArgumentException(

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

}

int yearNow = time.get(Calendar.YEAR);

int monthNow = time.get(Calendar.MONTH);

int dayOfMonthNow = time.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;

}

[code]

//我需要统计到当前月份的最后一天,所以取到下一个月的第一天在减1,这样就可以规避掉大月小月和平年闰年的问题了

int month=3;//这是传过来的统计时间的月份

int minus=2018;//这是传过来的统计时间的年份

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd");

String monthStr=(month+1)+"";

if(monthStr.length()==1){

monthStr="0"+monthStr;

}

int year=0;

if(monthStr.equals("13")){

monthStr="01";

year=minus+1;

}else{

year=minus;

}

Calendar now = Calendar.getInstance();

try {

now.setTime(sdf1.parse(year+monthStr+"01"));

now.set(Calendar.DATE, now.get(Calendar.DATE) - 1);

} catch (ParseException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

[code] Date parse = sdf1.parse("19590101");

int age = getAge(parse,now);

更多推荐

java跨年

本文发布于:2024-02-26 17:24:03,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1703307.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:java   跨年

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!