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

最新退休日期SQL语句(延迟退休) 员工表按性别,生日生成退休日期,及对应的延退月份 阅读详情

全国人民代表大会常务委员会关于实施渐进式延迟法定退休年龄的决定icon-default.png?t=O83Ahttps://www.gov.cn/yaowen/liebiao/202409/content_6974294.htm

1、业务代码

 /**
     * 计算退休日期
     * @author:csdn百思不得奇解
     * @param birthDate             出生日期
     * @param originalRetirementAge 原退休年龄
     * @return {@link LocalDate }
     */
    public static RetirementInfo calculateRetirementDate(LocalDate birthDate, int originalRetirementAge) {
        RetirementInfo retirementInfo = new RetirementInfo();
        // 政策起始日期
        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) {
            retirementInfo.setRetirementDateNew(originalRetirementDate);
            return retirementInfo;
        }

        // 计算调整后月份
        int monthsToAdd = 0;

        switch (originalRetirementAge) {
            case 60:
            case 55:
                // 原法定退休年龄为55岁的女职工:每4个月延迟1个月,逐步延迟至58岁
                // 原法定退休年龄为60岁的男职工:每4个月延迟1个月,逐步延迟至63岁
                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;
        }
        // 计算最终的退休年龄
        int totalMonths = originalRetirementAge * 12 + monthsToAdd;
        int newAgeInYears = totalMonths / 12;
        int newAgeInMonths = totalMonths % 12;


        // 计算最终的退休日期
        retirementInfo.setRetirementDateNew(originalRetirementDate.plusMonths(monthsToAdd));
        retirementInfo.setRetirementDateOld(originalRetirementDate);
        retirementInfo.setDelayMonth(monthsToAdd);
        retirementInfo.setRetirementAgeNew(String.format("%s岁%s个月", newAgeInYears, newAgeInMonths));
        retirementInfo.setRetirementAgeOld(String.format("%s岁%s个月", originalRetirementAge, 0));
        return retirementInfo;
    }

    @Data
    static
    class RetirementInfo {

        private Integer delayMonth;//延迟月份
        private String retirementAgeOld;//原退休年龄
        private String retirementAgeNew;//最新退休年龄
        private LocalDate retirementDateOld;//原退休日期
        private LocalDate retirementDateNew;//最新退休日期
    }

2、代码实现

public static void main(String[] args) {
        // 测试用例
        LocalDate birthDate = LocalDate.of(1972, 7, 31); // 出生日期
        //LocalDate birthDate = LocalDate.of(1972, 8, 31); // 出生日期
        //LocalDate birthDate = LocalDate.of(1965, 5, 27); // 出生日期
        int originalRetirementAge = 60; // 原法定退休年龄
        RetirementInfo retirementDate = calculateRetirementDate(birthDate, originalRetirementAge);
        System.out.println("新政策实施日期: " + "【" + "2025-01-01" + "】");
        System.out.println("预设人员的生日: " + "【" + birthDate + "】");
        System.out.println("原来的退休日期: " + "【" + retirementDate.getRetirementDateOld() + "】");
        System.out.println("新政策退休日期: " + "【" + retirementDate.getRetirementDateNew() + "】");
        System.out.println("原来的退休年龄: " + retirementDate.getRetirementAgeOld());
        System.out.println("新政策退休年龄: " + retirementDate.getRetirementAgeNew());
        System.out.println("*新政策延迟退休的月数: " + retirementDate.getDelayMonth() + "个月");
    }

3、效果图

大家可以自己多测试几个日期,因为我看有些博主的代码看似实现了,但是一些特殊的日期还是不准确的。特殊的日期比如1966-10-31,1965-1-31

1966-10-31和2027-04-30相差的年月为60岁5个月,是因为在这两个日期之间没有跨越10月31日这一天。而1966-10-30和2027-04-30相差的年月为60岁6个月,是因为在这两个日期之间跨越了10月31日这一天,所以多出了一个月。

[LVGL]:MACOS下使用LVGL模拟器 阅读详情

相关推荐

VS Code配置MASM32汇编环境:从安装到调试的完整指南

本文提供了一份详尽的指南,教你如何在VS Code中配置MASM32汇编开发环境,实现从安装、环境变量设置到编写、编译和调试32位Windows汇编窗口程序的完整工作流。通过集成现代编辑器的便利性与经典汇编工具链,旨在降低学习门槛,提升底层开发效率。

nn3456的博客 482

最新法定退休年龄日期计算

【代码Java】最新法定退休年龄日期计算。

apple_53491181的博客 1612

山石网科Hillstone防火墙基础上网配置_CLI命令行(最新版)

山石网科Hillstone防火墙安全网关基础上网基础网络配置_CLI命令行(最新版)

路与肥的博客 1万+

java实现根据延迟法定退休政策计算退休年龄

从2025年1月1日起,男职工和原法定退休年龄为五十五周岁的女职工,法定退休年龄每四个月延迟一个月,分别逐步延迟至六十三周岁和五十八周岁;原法定退休年龄为五十周岁的女职工,法定退休年龄每二个月延迟一个月,逐步延迟至五十五周岁。国家另有规定的,从其规定。运行结果与对照表一致。

记录点滴 1725

A Side Scan Sonar Image Denoising Algorithm Based on Compound of Fuzzy Weighted Average and Kalman F

Abstract 水下侧扫声纳图像的噪声来源:高斯噪声、脉冲、斑点噪声。 传统方法只能移除部分噪声,并且去噪后容易造成细节模糊。 本文在考虑到噪声的随机性以后,提出一种融合了模糊加权平均和卡尔曼滤波的去噪方法。 在最大化保留图像细节的基础上,同时去除高斯噪声和脉冲噪声 一.Introduction 由于海底环境和声波自身干涉的影响,声纳图像生成的图像难免会有噪点。声纳采集的图像通常会有高斯噪声、脉...

qq_44516871的博客 927

Wider Face+YOLOV7人脸检测

使用Wider Face数据集训练YOLOV7

chen_znn的博客 8405

java退休,关于退休时间问题 - java_wang的个人空间 - OSCHINA - 中文开源技术交流社区...

packagetest;importjava.util.*;publicclassRetirement//退休{privatestaticScannerin;publicstaticvoidmain(String[]args){in=newScanner(System.in);System.out.println("Howmuchmoneydouyouneed...

weixin_33586886的博客 482

主流双目相机技术参数横向评测:从ZED到国产新锐

本文对主流双目相机技术参数进行了横向评测,涵盖ZED、Bumblebee等国际品牌及国产新锐产品。详细分析了分辨率、帧率、视场角等关键参数,并针对机器人导航、AR/VR交互、工业检测等场景提供选型建议。特别推荐ZED相机在科研领域的成熟应用,以及国产方案在长基线设计和主动双目技术上的创新突破。

weixin_33670786的博客 317

2024 计算退休年龄、日期、延长月数【建议多测试几遍】

2024年计算退休年龄、日期、延长月数

qq_32619291的博客 1083

C++实战:基于ONNX Runtime与OpenCV部署XFeat图像匹配模型

本文详细介绍了在C++环境中,利用ONNX Runtime与OpenCV高效部署XFeat图像匹配模型的完整流程。内容涵盖环境搭建、模型转换、核心代码封装及可视化实现,旨在帮助开发者将这一先进的深度学习模型集成到对性能要求苛刻的工业或嵌入式应用中,实现鲁棒且快速的特征匹配。

gpu4optimizer的博客 521

香橙派5上跑DeepSeek-R1的避坑指南:从模型下载到NPU加速全流程解析

本文详细解析了在香橙派5(RK3588)上部署DeepSeek-R1蒸馏模型的完整流程与优化技巧。内容涵盖从系统配置、RKLLM工具链编译、模型转换到NPU加速调优的全过程,重点分享了如何利用RK3588的NPU算力实现高效推理,并提供了常见问题的解决方案,为边缘设备部署LLM提供了实用指南。

CAT789的专栏 715

java法定退休年龄计算器

计算方式:2025年起每4个月延迟1个月(例如2025年1月退休年龄为60岁1个月,2026年1月为60岁4个月,依此类推)。出生日期: 1990-09-14。出生日期: 1990-09-14。出生日期: 1990-09-14。退休年月: 2053年09月。退休年月: 2048年09月。退休年月: 2045年09月。(每2个月延迟1个月);(每4个月延迟1个月)。退休年龄: 63岁0个月。退休年龄: 58岁0个月。退休年龄: 55岁0个月。延迟月数: 36个月。延迟月数: 36个月。延迟月数: 60个月。

一个写了10年bug的程序员日常笔记。 619

XDS110 USB Debug Probe连接错误-260:CCS Theia环境下的诊断与修复指南

本文详细解析了CCS Theia环境下XDS110 USB Debug Probe连接错误-260的诊断与修复方法。从硬件连接到驱动状态、固件更新到软件配置,提供了全面的排查指南,帮助开发者快速解决这一常见的调试器通信障碍问题,确保嵌入式开发工作流畅进行。

hope8的博客 281

js版 最新版退休年龄计算器公式 代码,与电子社保卡小程序的计算结果一致

【代码】js版 最新版退休年龄计算器公式 代码,与电子社保卡小程序的计算结果一致。

qq_22385935的博客 1044

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

记渐进式延迟法定退休年龄计算

好久没有进行文章记录了,今天完成了一个渐进式延迟法定退休年龄计算的java实现方法。亲写、亲测没毛病,记录下来以备后用。估计网上都有好多了。也不知道是否有雷同。鉴于自己写的,所以记录下来。

u011529483的博客 1017

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

为了准确计算延迟退休时间,我做了一个退休年龄计算器

最新的延迟退休计算器

瞎老弟的博客 7793

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

通过身份证号 计算退休日期 例男60岁,女55岁退休

Java通过身份证号 计算退休日期 例男60岁,女55岁退休 直接上代码 /** * 根据身份证号计算退休日期 * @return */ @ApiOperation("根据身份证号计算账号有效期") @ApiImplicitParams({@ApiImplicitParam(name = "cardId", value = "传身份证号", required = true, paramType = "query", dataType = "String")})

wahahage的博客 3096

Excel根据身份证号,计算退休日期和剩余天数!

日常工作中,有时我们需要使用Excel表格统计男女员工退休日期或者退休剩余天数,很多新手小伙伴可能不知道如何下手。今天就跟大家分享一下WPS中的Excel表格数据如果根据身份证号,自动批量计算退休日期和剩余天数的方法技巧,简单实用,快速提高工作效率。

青涩小鱼的博客 5218

Java实现年龄计算

java计算生日与年龄

李白的粉的博客 7661

Java根据年月日精准计算年龄

虽说网上好多根据年月日计算年龄的,但是有的是粗略计算年龄,有的就没有防护未来的日期,以至于年龄存在负数的情况。 so,自己动手丰衣足食,写了以下工具类: package com.jglz.qing.age; import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date; /** * Cre...

曰业而安的博客 1110

java多大年龄退休,2017年男职工退休年龄最新规定(法定退休年龄)

【导读】2017年男职工的法定退休年龄是多少?男职工提前退休年龄与延迟退休年龄的限制又是什么?最新男职工的退休年龄规定又有哪些?下面我们逐一解密,欢迎阅读!2017年男职工法定退休年龄新规一、党政机关、群众团体、企业、事业单位的干部符合下列条件之一的,都可以退休。1、男职工年满60周岁,女职工年满55周岁,参加革命工作年限满十年的;2、男职工年满50周岁,女职工年满45周岁,参加革命工作年限满十年...

weixin_29932857的博客 474

日期计算岁数

分析以下需求,并用代码实现: 1.从键盘录入一个日期字符串,格式为 xxxx-xx-xx,代表该人的出生日期 2.利用人出生日期到当前日期所经过的毫秒值计算出这个人活了多少天

Java技术 703

判断退休的系统 (三目运算符)

lisi_ch的博客 436

关于退休时间问题

packagetest; importjava.util.*; publicclassRetirement//退休 { privatestaticScannerin; publicstaticvoidmain(String[]args) ...

cia0007的博客 193

【Java】循环联系(退休计算)

import java.util.Scanner; public class Retirement2 { public static void main(String[] args) { //read inputs Scanner in = new Scanner(System.in); ...

weixin_30387423的博客 409
上一篇: 二维码的原理以及Java生成二维码【中间带图片】
下一篇: Java实现2025年1月1日起最新退休年龄算法
@百思不如奇解
博客等级 码龄5年 352粉丝 101原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

@百思不如奇解

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

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

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

打赏作者

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

抵扣说明:

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

余额充值