.net用C# 实现2025年1月1日起最新退休年龄算法

        /// <summary>
        /// 计算退休年龄
        /// </summary>
        /// <param name="birthDate">生日</param>
        /// <param name="originalRetirementAge">原退休年龄</param>
        /// <returns></returns>
 public static DateTime CalculateRetirementDate(DateTime birthDate,int originalRetirementAge)
{
         // 基本设置
         DateTime policyStartDate = new DateTime(2025, 1, 1);
        // 计算原退休日期
        DateTime originalRetirementDate = birthDate.AddYears(originalRetirementAge);
         // 计算政策开始日期到原退休日期的月数差异
         long monthsBetween = Math.Abs((policyStartDate.Year*12+policyStartDate.Month) - (originalRetirementDate.Year*12+ originalRetirementDate.Month))+1 ;
         // 计算政策开始日期到原退休日期的天数差异
         long daysBetween = (originalRetirementDate-policyStartDate).Days;
         // 如果月数差异为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.Ceiling((double)monthsBetween / 4);
         if (monthsToAdd > 36)
         {
         monthsToAdd = 36;
         }
          break;
     case 50:
        // 原法定退休年龄为50岁的女职工:每2个月延迟1个月,逐步延迟至55岁
        monthsToAdd = (int)Math.Ceiling((double)monthsBetween / 2);
        if (monthsToAdd > 60)
        {
            monthsToAdd = 60;
        }
        break;
    default:
        break;


}
    // 计算最终的退休日期
    return originalRetirementDate.AddMonths(monthsToAdd);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值