mirror of
https://gitee.com/dromara/hutool.git
synced 2025-05-18 22:19:34 +08:00
commit
1f58e6749d
@ -626,7 +626,7 @@ public class CalendarUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计算相对于dateToCompare的年龄,长用于计算指定生日在某年的年龄
|
* 计算相对于dateToCompare的年龄,常用于计算指定生日在某年的年龄
|
||||||
*
|
*
|
||||||
* @param birthday 生日
|
* @param birthday 生日
|
||||||
* @param dateToCompare 需要对比的日期
|
* @param dateToCompare 需要对比的日期
|
||||||
@ -649,12 +649,16 @@ public class CalendarUtil {
|
|||||||
int age = year - cal.get(Calendar.YEAR);
|
int age = year - cal.get(Calendar.YEAR);
|
||||||
|
|
||||||
final int monthBirth = cal.get(Calendar.MONTH);
|
final int monthBirth = cal.get(Calendar.MONTH);
|
||||||
if (month == monthBirth) {
|
|
||||||
|
//当前日期,则为0岁
|
||||||
|
if (age == 0){
|
||||||
|
return 0;
|
||||||
|
} else if (month == monthBirth) {
|
||||||
|
|
||||||
final int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);
|
final int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);
|
||||||
final boolean isLastDayOfMonthBirth = dayOfMonthBirth == cal.getActualMaximum(Calendar.DAY_OF_MONTH);
|
final boolean isLastDayOfMonthBirth = dayOfMonthBirth == cal.getActualMaximum(Calendar.DAY_OF_MONTH);
|
||||||
if ((false == isLastDayOfMonth || false == isLastDayOfMonthBirth) && dayOfMonth < dayOfMonthBirth) {
|
if ((false == isLastDayOfMonth || false == isLastDayOfMonthBirth) && dayOfMonth <= dayOfMonthBirth) {
|
||||||
// 如果生日在当月,但是未达到生日当天的日期,年龄减一
|
// 如果生日在当月,但是未超过生日当天的日期,年龄减一
|
||||||
age--;
|
age--;
|
||||||
}
|
}
|
||||||
} else if (month < monthBirth) {
|
} else if (month < monthBirth) {
|
||||||
|
@ -1795,7 +1795,7 @@ public class DateUtil extends CalendarUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计算相对于dateToCompare的年龄,长用于计算指定生日在某年的年龄
|
* 计算相对于dateToCompare的年龄,常用于计算指定生日在某年的年龄
|
||||||
*
|
*
|
||||||
* @param birthday 生日
|
* @param birthday 生日
|
||||||
* @param dateToCompare 需要对比的日期
|
* @param dateToCompare 需要对比的日期
|
||||||
|
@ -1130,4 +1130,16 @@ public class DateUtilTest {
|
|||||||
Assert.assertEquals("2021-03-17 06:31:33", dateTime3.toString());
|
Assert.assertEquals("2021-03-17 06:31:33", dateTime3.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* issue#I6E6ZG 法定年龄/周岁/实岁计算
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void ageOfNowTest() {
|
||||||
|
DateTime concurrentDate = DateUtil.date();
|
||||||
|
DateTime birthDay = DateUtil.offset(concurrentDate, DateField.YEAR, -71);
|
||||||
|
Assert.assertEquals(70, DateUtil.ageOfNow(birthDay));
|
||||||
|
Assert.assertEquals(71, DateUtil.ageOfNow(DateUtil.offsetDay(birthDay, -1)));
|
||||||
|
Assert.assertEquals(0, DateUtil.ageOfNow(concurrentDate));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user