全国人民代表大会常务委员会关于实施渐进式延迟法定退休年龄的决定https://www.gov.cn/yaowen/liebiao/202409/content_6974294.htm
1、业务代码
/**
* 计算退休日期
*
* @param birthDate 出生日期
* @param originalRetirementAge 原退休年龄
* @return {@link LocalDate }
*/
public static LocalDate calculateRetirementDate(LocalDate birthDate, int originalRetirementAge) {
// 基本设置
LocalDate policyStartDate = LocalDate.of(2025, 1, 1);
// 计算原退休日期
LocalDate originalRetirementDate = birthDate.plusYears(originalRetirementAge);
// 计算政策开始日期到原退休日期的月数差异
long monthsBetween = ChronoUnit.MONTHS.between(policyStartDate, originalRetirementDate)+1L;
// 计算政策开始日期到原退休日期的天数差异
long daysBetween = ChronoUnit.DAYS.between(policyStartDate, originalRetirementDate);
// 如果月数差异为0或负值,直接返回原退休日期
if (daysBetween < 0) {
return originalRetirementDate;
}
// 计算调整后月份
int monthsToAdd = 0;
switch (originalRetirementAge) {
case 60:
case 55:
// 原法定退休年龄为60岁的男职工:每4个月延迟1个月,逐步延迟至63岁
// 原法定退休年龄为55岁的女职工:每4个月延迟1个月,逐步延迟至58岁
monthsToAdd = (int) Math.ceil((double) monthsBetween / 4);
if (monthsToAdd > 36) {
monthsToAdd = 36;
}
break;
case 50:
// 原法定退休年龄为50岁的女职工:每2个月延迟1个月,逐步延迟至55岁
monthsToAdd = (int) Math.ceil((double) monthsBetween / 2);
if (monthsToAdd > 60) {
monthsToAdd = 60;
}
break;
default:
break;
}
// 计算最终的退休日期
return originalRetirementDate.plusMonths(monthsToAdd);
}
2、代码实现
public static void main(String[] args) {
// 测试用例
LocalDate birthDate = LocalDate.of(1965, 1, 27); // 出生日期
int originalRetirementAge = 60; // 原法定退休年龄
LocalDate retirementDate = calculateRetirementDate(birthDate, originalRetirementAge);
System.out.println("计算出的退休日期为:" + retirementDate);
}