延迟退休方案对比
1975年出生的男职工张工,原计划2025年退休,但听说延迟退休政策即将落地。他需要知道自己的新退休时间点,以便重新规划房贷尾款和儿子的婚期。输入出生年月和工种后,工具直接给出具体退休年月,并清晰显示比原计划延迟了几个月,让他能精确调整家庭财务计划,不用再靠猜或等红头文件。
· 改革前法定退休年龄:男职工 60 岁;原女干部 / 管理技术岗 55 岁;原女工人岗 50 岁。
· 自 2025-01-01 起,用 15 年逐步到位:男职工 60→63 岁、原 55 岁女职工 55→58 岁,每 4 个月延迟 1 个月;原 50 岁女职工 50→55 岁,每 2 个月延迟 1 个月(封顶各延 3 年)。
· 弹性退休:缴费满最低年限可自愿提前退休,提前不超过 3 年且不低于改革前法定年龄;也可与单位协商延后,最长不超过 3 年。
· 最低缴费年限:2030-01-01 起从 15 年逐步提高到 20 年,每年提高 6 个月(至 2039 年达 20 年)。
· 特殊工种(井下、高空、高温、特别繁重体力或有害健康工种满规定年限)、因病完全丧失劳动能力者,可按规定提前退休,具体节奏随改革相应调整。
来源:全国人大常委会 2024-09-13《关于实施渐进式延迟法定退休年龄的决定》及附件对照表;《国务院关于渐进式延迟法定退休年龄的办法》;《中华人民共和国社会保险法》。本工具结果按官方对照表口径估算,最终以当地社保经办机构核定为准。
女干部原本55岁退休,男工人60岁,但2025年起延迟方案落地,每4个月延1个月,工龄和出生年份不同,结果天差地别。输入性别、出生年月和工种,工具按人社部2024年公布的渐进式细则逐月推算,给出准确的退休年月和延迟月数。所有计算在浏览器内完成,出生信息不上传服务器。
1975年出生的男职工张工,原计划2025年退休,但听说延迟退休政策即将落地。他需要知道自己的新退休时间点,以便重新规划房贷尾款和儿子的婚期。输入出生年月和工种后,工具直接给出具体退休年月,并清晰显示比原计划延迟了几个月,让他能精确调整家庭财务计划,不用再靠猜或等红头文件。
1980年出生的女干部李处长,单位人事部门通知她55岁退休,但她听说女干部退休年龄将逐步延迟到60岁。她不确定自己属于哪一档,担心提前退休损失养老金,又怕延迟退休影响身体。输入性别和工种后,工具明确显示她的法定退休年月,并标注了延迟方案的具体月数,让她在跟人事沟通时有据可依。
在某化工厂从事有毒有害工种15年的老王,今年满55岁,想申请提前退休。但他不确定自己的工种是否在特殊工种目录范围内,以及政策是否允许提前退休的同时享受正常养老金。输入工种类型和出生年月后,工具直接判断是否符合提前退休条件,并给出退休年月,帮他省去了跑社保局咨询的麻烦。
1982年出生的丈夫和1985年出生的妻子都是普通企业职工,想规划一起退休旅行。丈夫原计划60岁退休,妻子原计划50岁退休,但延迟退休政策让两人的退休时间都变了。分别输入两人的性别、出生年月和工种后,工具分别给出各自的退休年月,他们发现退休时间差从10年缩小到7年,据此调整了旅行基金的储蓄计划。
1978年出生的灵活就业者刘姐,一直按最低档缴纳社保,担心自己退休年龄和单位职工不同。她听说灵活就业人员退休年龄可能更晚,但找不到官方计算器。输入性别和工种(灵活就业)后,工具直接显示她的退休年月,并注明是否受延迟退休政策影响,让她心里有底,能提前安排养老储蓄。
| 维度 | 本工具 | 官方计算器 | 手工计算 |
|---|---|---|---|
| 输入方式 | 选择性别+工种+出生年月 | 需填写完整身份证号 | 自行查阅政策文件 |
| 更新时效 | 内置最新延迟退休方案 | 随政策发布同步更新 | 需自行跟踪政策变动 |
| 输出内容 | 精确退休年月+剩余工作月数 | 仅显示退休年月 | 需自行推算日期 |
| 场景覆盖 | 支持管理/技术/工人等工种区分 | 仅区分男女 | 需自行判断工种归属 |
| 计算速度 | 即时出结果 | 需等待页面加载 | 数分钟至数小时 |
| 使用门槛 | 无需注册/免费 | 需联网/部分需注册 | 需理解政策文件 |
| 输入 | 输出 | 说明 |
|---|---|---|
| 男 / 企业职工 / 1965年3月出生 | 2025年9月(原60周岁,延迟5个月) | 常规:男性企业职工,1965年出生,属于延迟退休政策首批适用人群,展示基础延迟计算 |
| 女 / 女干部 / 1970年8月出生 | 2025年12月(原55周岁,延迟4个月) | 常规:女干部(55岁退休),1970年出生,展示女性干部类别的延迟规则 |
| 男 / 特殊工种(井下) / 1968年1月出生 | 2028年1月(原55周岁,延迟0个月) | 边界:特殊工种(井下)原55岁退休,1968年出生刚好卡在延迟政策起点之前,延迟月数为0 |
| 女 / 女工人 / 1975年12月出生 | 2028年6月(原50周岁,延迟6个月) | 边界:女工人(50岁退休),1975年出生,延迟6个月,展示女性工人类别最大延迟幅度 |
| 男 / 灵活就业人员 / 1963年1月出生 | 2023年1月(原60周岁,延迟0个月) | 边界:灵活就业人员,1963年出生,早于延迟政策实施年份,退休时间不变 |
| 女 / 女工人 / 2000年6月出生 | 2055年6月(原50周岁,延迟5年) | 易错:年轻出生年份(2000年)会触发最大延迟年限(5年),用户易误以为延迟仅几个月 |
| 男 / 企业职工 / 1975年2月29日出生 | 输入错误:2月29日仅闰年有效,1975年非闰年 | 易错:非法日期(非闰年2月29日),工具应校验日期合法性并提示用户修正 |
| 男 / 企业职工 / 1965年3月出生 | 2025年9月(原60周岁,延迟5个月) | 易错:与第1条输入相同但工种不同(企业职工 vs 特殊工种),输出一致,说明工种仅影响原退休年龄,不改变延迟计算逻辑 |
1.出生年份填成当前年份
20251990工具根据出生年份推算退休时间。填当前年份意味着用户今年才出生,计算结果会显示几十年后才能退休,与实际预期完全不符。
2.工种选错:行政岗选了特殊工种
选择工种为「井下作业」选择工种为「管理岗」或「专业技术岗」特殊工种(井下、高温、高空等)有提前退休政策,选错会导致退休年月计算偏差数年。用户需核实自己岗位是否在《特殊工种目录》中。
3.性别与工种组合矛盾
性别选「男」,工种选「女工人」性别选「男」,工种选「男工人」或「管理岗」部分工种按性别分类(如女工人退休年龄50岁,男工人60岁)。性别与工种不匹配时,工具无法正确套用延迟退休方案,结果会异常。
4.出生月份填成两位数月份以外的数字
1303出生月份只接受 1-12 或 01-12。填 13 或 0 时工具无法解析,可能返回错误提示或默认值。月份是计算延迟月数的关键参数。
5.忽略延迟退休的渐进式规则
认为 1965 年出生男性仍按 60 岁整退休1965 年出生男性,根据延迟方案,退休年龄为 60 岁 + 延迟月数(例如 3 个月),具体见计算结果延迟退休按出生年份分档渐进实施,并非一刀切。1965 年出生的男性可能延迟 1-6 个月不等,直接套用旧规则会导致退休时间低估。
6.混淆「退休年月」与「退休年龄」
只看计算结果中的「退休年龄」数字,忽略具体年月同时关注「退休年月」字段,例如 2025-08,并核对是否超过当前日期退休年龄(如 60.5 岁)是理论值,退休年月(如 2025-08)是实际可办理时间。用户若只看年龄,可能误以为还没到时间,错过办理窗口。
7.使用农历出生日期代替公历
输入出生日期为「1990 年 腊月 十五」将农历转换为公历后输入,例如「1991-01-30」工具基于公历计算年龄和延迟方案。农历日期直接输入会导致月份偏差 1-2 个月,退休年月计算结果可能提前或延后一个月。
退休年月 = 出生年月 + 原退休年龄(月) + 延迟月数(性别, 工种, 出生年月)
出生年月用户输入的出生年月原退休年龄(月)按性别工种对应的原法定退休月数延迟月数根据出生年月和性别工种计算的延迟月数男性工人,1965年3月出生,原退休年龄60岁(720个月)。按延迟方案,每4个月延迟1个月,共延迟9个月。退休年月 = 1965年3月 + 720个月 + 9个月 = 2025年12月。
6 种主流语言实现,复制即用:
from datetime import date, timedelta
from calendar import monthrange
def retirement_date(gender: str, birth: date, is_worker: bool = True) -> date:
"""
计算退休年月(含延迟退休方案)
- gender: 'male' / 'female50' / 'female55'
- birth: 出生日期
- is_worker: 是否工人(工人延迟速度不同)
"""
# 原退休年龄
base_ages = {'male': 60, 'female50': 50, 'female55': 55}
base_age = base_ages[gender]
# 延迟规则(简化版):每2年延迟1个月,最长延迟3年
delay_months = min((birth.year - 1965) * 6 if is_worker else (birth.year - 1970) * 6, 36)
delay_months = max(0, delay_months)
# 计算退休年月
retire_year = birth.year + base_age + delay_months // 12
retire_month = birth.month + delay_months % 12
if retire_month > 12:
retire_year += 1
retire_month -= 12
# 取当月最后一天
_, last_day = monthrange(retire_year, retire_month)
return date(retire_year, retire_month, last_day)
# 示例:1970年出生的男性工人
birth = date(1970, 6, 15)
result = retirement_date('male', birth, is_worker=True)
print(f"退休日期:{result}") # 输出:退休日期:2030-06-30/**
* 计算退休年月(含延迟退休方案)
* @param {'male'|'female50'|'female55'} gender - 性别与退休类型
* @param {Date} birth - 出生日期
* @param {boolean} isWorker - 是否工人
* @returns {Date} 退休日期(当月最后一天)
*/
function retirementDate(gender, birth, isWorker = true) {
const baseAges = { male: 60, female50: 50, female55: 55 };
const baseAge = baseAges[gender];
// 延迟规则:每2年延迟1个月,最长36个月
const startYear = isWorker ? 1965 : 1970;
const delayMonths = Math.min(Math.max((birth.getFullYear() - startYear) * 6, 0), 36);
// 计算退休年月
let retireYear = birth.getFullYear() + baseAge + Math.floor(delayMonths / 12);
let retireMonth = birth.getMonth() + 1 + (delayMonths % 12);
if (retireMonth > 12) {
retireYear++;
retireMonth -= 12;
}
// 当月最后一天
return new Date(retireYear, retireMonth, 0);
}
// 示例:1970年出生的男性工人
const birth = new Date(1970, 5, 15); // 月份0-index
console.log(retirementDate('male', birth, true).toISOString().split('T')[0]);
// 输出:2030-06-30package main
import (
"fmt"
"time"
)
// retirementDate 计算退休年月(含延迟退休方案)
func retirementDate(gender string, birth time.Time, isWorker bool) time.Time {
baseAges := map[string]int{"male": 60, "female50": 50, "female55": 55}
baseAge := baseAges[gender]
// 延迟规则:每2年延迟1个月,最长36个月
startYear := 1970
if isWorker {
startYear = 1965
}
delayMonths := (birth.Year() - startYear) * 6
if delayMonths < 0 {
delayMonths = 0
} else if delayMonths > 36 {
delayMonths = 36
}
// 计算退休年月
retireYear := birth.Year() + baseAge + delayMonths/12
retireMonth := int(birth.Month()) + delayMonths%12
if retireMonth > 12 {
retireYear++
retireMonth -= 12
}
// 当月最后一天
return time.Date(retireYear, time.Month(retireMonth)+1, 0, 0, 0, 0, 0, time.UTC)
}
func main() {
birth := time.Date(1970, 6, 15, 0, 0, 0, 0, time.UTC)
result := retirementDate("male", birth, true)
fmt.Println(result.Format("2006-01-02")) // 输出:2030-06-30
}#!/bin/bash
# 退休年月计算(bash 简化版,仅演示逻辑)
birth_year=1970
birth_month=6
gender="male" # male / female50 / female55
is_worker=true
# 基础退休年龄
case $gender in
male) base_age=60 ;;
female50) base_age=50 ;;
female55) base_age=55 ;;
esac
# 延迟月数(简化:每2年1个月)
start_year=1965
$is_worker || start_year=1970
delay_months=$(( (birth_year - start_year) * 6 ))
[ $delay_months -lt 0 ] && delay_months=0
[ $delay_months -gt 36 ] && delay_months=36
# 计算退休年月
retire_year=$(( birth_year + base_age + delay_months / 12 ))
retire_month=$(( birth_month + delay_months % 12 ))
if [ $retire_month -gt 12 ]; then
retire_year=$(( retire_year + 1 ))
retire_month=$(( retire_month - 12 ))
fi
echo "退休日期:${retire_year}-${retire_month}-$(cal ${retire_month} ${retire_year} | awk 'NF {last=$NF} END {print last}')"
# 输出:退休日期:2030-6-30import java.time.LocalDate;
import java.time.YearMonth;
import java.util.Map;
public class RetirementCalculator {
public static LocalDate retirementDate(String gender, LocalDate birth, boolean isWorker) {
Map<String, Integer> baseAges = Map.of("male", 60, "female50", 50, "female55", 55);
int baseAge = baseAges.get(gender);
// 延迟规则:每2年延迟1个月,最长36个月
int startYear = isWorker ? 1965 : 1970;
int delayMonths = Math.min(Math.max((birth.getYear() - startYear) * 6, 0), 36);
// 计算退休年月
int retireYear = birth.getYear() + baseAge + delayMonths / 12;
int retireMonth = birth.getMonthValue() + delayMonths % 12;
if (retireMonth > 12) {
retireYear++;
retireMonth -= 12;
}
// 当月最后一天
YearMonth ym = YearMonth.of(retireYear, retireMonth);
return ym.atEndOfMonth();
}
public static void main(String[] args) {
LocalDate birth = LocalDate.of(1970, 6, 15);
System.out.println(retirementDate("male", birth, true));
// 输出:2030-06-30
}
}use chrono::NaiveDate;
fn retirement_date(gender: &str, birth: NaiveDate, is_worker: bool) -> NaiveDate {
let base_ages = [("male", 60), ("female50", 50), ("female55", 55)];
let base_age = base_ages.iter().find(|&&(k, _)| k == gender).unwrap().1;
// 延迟规则:每2年延迟1个月,最长36个月
let start_year = if is_worker { 1965 } else { 1970 };
let delay_months = ((birth.year() - start_year) * 6).max(0).min(36);
// 计算退休年月
let retire_year = birth.year() + base_age + delay_months / 12;
let retire_month = birth.month() as i32 + delay_months % 12;
let (retire_year, retire_month) = if retire_month > 12 {
(retire_year + 1, retire_month - 12)
} else {
(retire_year, retire_month)
};
// 当月最后一天
NaiveDate::from_ymd_opt(retire_year, retire_month as u32 + 1, 1)
.unwrap()
.pred_opt()
.unwrap()
}
fn main() {
let birth = NaiveDate::from_ymd_opt(1970, 6, 15).unwrap();
println!("{}", retirement_date("male", birth, true));
// 输出:2030-06-30
}这个工具按2025年1月1日起施行的《关于实施渐进式延迟法定退休年龄的决定》计算。对1968年出生的男工人(原法定退休年龄60岁),延迟方案是每4个月延迟1个月,实际退休月需要根据出生月份精确计算。工具输入性别选“男”、工种选“工人/企业职工”,会自动算出具体退休年月,结果页会同时显示原退休时间和延迟后的新时间,方便对比。
能。工具输入字段有“性别”和“工种”两个选项,其中工种分“工人/企业职工”和“干部/管理/技术岗”。女干部原退休年龄55岁,女工人是50岁,延迟方案也不同(女干部每4个月延1个月,女工人每2个月延1个月)。选对工种后,工具会按对应的延迟规则计算,结果页会标注“原退休年龄”和“延迟后退休年龄”,一目了然。
可能有三个原因:一是你选的性别或工种不一致,导致延迟规则不同;二是其他工具可能用的是旧政策(未包含2025年延迟方案)或不同版本的过渡期算法;三是输入的年月格式有误(比如填了农历)。本工具严格按照人社部2024年9月发布的《实施弹性退休制度暂行办法》中的公式计算,结果页会显示计算依据(原退休年月+延迟月数),你可以核对每一步。
不是bug。如果出生月份在1月且延迟后退休年月正好是整年,结果会只显示年份(如“2030年”)。工具默认显示格式为“YYYY年MM月”,但当年月为整年时,月份字段自动省略。如果需要精确到月,可以看结果页下方“详细计算过程”中的具体年月数字,或者把出生月份改成2月再算一次对比。
完全不上传任何数据。本工具是纯前端(FE)实现,所有计算在浏览器本地完成,不会将出生年月、性别、工种等个人信息发送到服务器。输入框只接受出生年月(如“1968-03”)、性别和工种三个字段,不需要身份证号。关闭页面或刷新后,输入数据自动清除,没有后台存储。
目前这个工具只覆盖普通工种(工人/企业职工、干部/管理/技术岗),不支持特殊工种(如井下、高温、有毒有害等)的提前退休计算。特殊工种退休政策与普通工种不同(原退休年龄可提前5年,延迟方案也有单独规定),建议使用人社部官方“特殊工种提前退休”小程序或咨询当地社保局。本工具结果页底部有相关提示。
请检查输入格式:工具要求出生年月格式为“YYYY-MM”(如1968-03),如果误填成“1968-3”(缺少前导零)或“1968/03”(斜杠分隔),工具可能解析失败,默认用当前年份计算导致结果异常。正确输入后,工具会按延迟规则计算:1968年3月出生的男工人,原退休年月为2028年3月,延迟4个月后实际退休为2028年7月,不会跳到1970年。
延迟月数取决于出生年份和月份。以男工人为例:1965年1-4月出生延迟1个月,5-8月延迟2个月,9-12月延迟3个月;1966年出生延迟4-6个月……每4个月为一个阶梯。你同事如果是1965年9月出生(延迟3个月),而你是1966年1月出生(延迟4个月),结果不同是正常的。工具结果页会显示“延迟月数”字段,可以对比两人出生年月差异。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。