首页 > 编程语言 >2025年1月1日起最新退休年龄算法Java实现

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

时间:2024-09-19 17:19:58浏览次数:15  
标签:originalRetirementAge Java monthsToAdd 2025 日期 退休年龄 日起 LocalDate 延迟

全国人民代表大会常务委员会关于实施渐进式延迟法定退休年龄的决定icon-default.png?t=O83Ahttps://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);
    }

3、效果图

标签:originalRetirementAge,Java,monthsToAdd,2025,日期,退休年龄,日起,LocalDate,延迟
From: https://blog.csdn.net/UTF8_8/article/details/142365444

相关文章

  • Java语言程序设计基础篇_编程练习题**18.31 (替换单词)
    目录题目:**18.31(替换单词)习题思路代码示例 运行结果替换前替换后题目:**18.31(替换单词) 编写一个程序,递归地用一个新单词替换某个目录下的所有文件中出现的某个单词。从命令行如下传递参数:javaExercise18_31dirNameoldWordnewWord习题思路(读取路径方......
  • Java 数据类型转换详解:隐式转换(自动转换)与强制转换(手动转换)
    目录前言取值范围从小到大的关系:隐式转换(自动转换)......
  • java 根据模板导出word文档(poi-tl)
    poi-tl是什么poi-tl是一个基于Apache POI的Word模板引擎,也是一个免费开源的Java类库,你可以非常方便的加入到你的项目中,并且拥有着让人喜悦的特性。为什么选择poi-tl方案移植性功能性易用性Poi-tlJava跨平台Word模板引擎,基于ApachePOI,提供更友好的API低代码,准备......
  • 多平台MD5加密与验证的实践:Java、Python、Windows、Linux
    前言在上一篇文章中,我们详细介绍了MD5算法的原理及其应用场景。为了帮助开发者更好地掌握MD5的实际使用方法,本文将通过Java、Python、Windows命令行、以及Linux命令行等多种方式,讲解如何在不同平台上生成和验证MD5摘要。通过这些实例,你可以更灵活地运用MD5来处理数据完整......
  • java+vue计算机毕设电影院售票网站【源码+开题+论文+程序】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和人们生活节奏的加快,线上购票已成为现代消费者享受娱乐服务的主要方式之一。电影院作为大众休闲娱乐的重要场所,其售票模式......