This commit is contained in:
Looly 2023-02-13 18:14:40 +08:00
parent 5753444de2
commit 10a16c4ee3
2 changed files with 17 additions and 1 deletions

View File

@ -659,13 +659,18 @@ public class CalendarUtil {
cal.setTimeInMillis(birthday); cal.setTimeInMillis(birthday);
int age = year - cal.get(Calendar.YEAR); int age = year - cal.get(Calendar.YEAR);
//当前日期则为0岁
if (age == 0){
return 0;
}
final int monthBirth = cal.get(Calendar.MONTH); final int monthBirth = cal.get(Calendar.MONTH);
if (month == monthBirth) { 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) { // issue#I6E6ZG法定生日当天不算年龄从第二天开始计算
if ((false == isLastDayOfMonth || false == isLastDayOfMonthBirth) && dayOfMonth <= dayOfMonthBirth) {
// 如果生日在当月但是未达到生日当天的日期年龄减一 // 如果生日在当月但是未达到生日当天的日期年龄减一
age--; age--;
} }

View File

@ -1100,4 +1100,15 @@ public class DateUtilTest {
Assert.assertNotNull(dateTime3); Assert.assertNotNull(dateTime3);
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 issueI6E6ZGTest() {
// issue#I6E6ZG法定生日当天不算年龄从第二天开始计算
Assert.assertEquals(70, DateUtil.age(DateUtil.parse("1952-02-14"), DateUtil.parse("2023-02-14")));
Assert.assertEquals(71, DateUtil.age(DateUtil.parse("1952-02-13"), DateUtil.parse("2023-02-14")));
Assert.assertEquals(0, DateUtil.age(DateUtil.parse("2023-02-14"), DateUtil.parse("2023-02-14")));
}
} }