Java实现2025年1月1日起最新退休年龄算法

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);
    }

3、效果图

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@百思不得奇解

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值