mirror of
https://gitee.com/dromara/hutool.git
synced 2025-05-18 14:09:35 +08:00
commit
1f58e6749d
@ -626,7 +626,7 @@ public class CalendarUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算相对于dateToCompare的年龄,长用于计算指定生日在某年的年龄
|
||||
* 计算相对于dateToCompare的年龄,常用于计算指定生日在某年的年龄
|
||||
*
|
||||
* @param birthday 生日
|
||||
* @param dateToCompare 需要对比的日期
|
||||
@ -649,12 +649,16 @@ public class CalendarUtil {
|
||||
int age = year - cal.get(Calendar.YEAR);
|
||||
|
||||
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 boolean isLastDayOfMonthBirth = dayOfMonthBirth == cal.getActualMaximum(Calendar.DAY_OF_MONTH);
|
||||
if ((false == isLastDayOfMonth || false == isLastDayOfMonthBirth) && dayOfMonth < dayOfMonthBirth) {
|
||||
// 如果生日在当月,但是未达到生日当天的日期,年龄减一
|
||||
if ((false == isLastDayOfMonth || false == isLastDayOfMonthBirth) && dayOfMonth <= dayOfMonthBirth) {
|
||||
// 如果生日在当月,但是未超过生日当天的日期,年龄减一
|
||||
age--;
|
||||
}
|
||||
} else if (month < monthBirth) {
|
||||
|
@ -1795,7 +1795,7 @@ public class DateUtil extends CalendarUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算相对于dateToCompare的年龄,长用于计算指定生日在某年的年龄
|
||||
* 计算相对于dateToCompare的年龄,常用于计算指定生日在某年的年龄
|
||||
*
|
||||
* @param birthday 生日
|
||||
* @param dateToCompare 需要对比的日期
|
||||
|
@ -1130,4 +1130,16 @@ public class DateUtilTest {
|
||||
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