代码节点 |
通过退休政策计算公式得出结果 |
代码示例
import math
from datetime import datetime, timedelta
from calendar import monthrange
def main(params):
test=''
tuixiu_nianling_text=''
tuixiu_shijian=''
yanchi_yueshu=''
tuixiu_nianling=params['tuixiu_nianling']
value=0
year=int(params['year'])
month=int(params['month'])
start_date=''
if tuixiu_nianling==60:
test='男性'
value=(((year-1965)*12+month)/4)
if value<=0:
value=0
start_date = datetime(year+60, month, 1)
tuixiu_nianling_text=60
elif tuixiu_nianling==55:
test='女干部'
value=(((year-1970)*12+month)/4)
if value<=0:
value=0
start_date = datetime(year+55, month, 1)
tuixiu_nianling_text=55
else:
test='女职工'
value=(((year-1975)*12+month)/2)
if value<=0:
value=0
start_date = datetime(year+50, month, 1)
tuixiu_nianling_text=50
integer_part, fractional_part=math.modf(value)
if tuixiu_nianling==50:
if value>60:
yanchi_yueshu=60
else:
if integer_part>0:
yanchi_yueshu=fractional_part+1
else:
yanchi_yueshu=fractional_part
else:
if value>36:
yanchi_yueshu=36
else:
if integer_part>0:
yanchi_yueshu=fractional_part+1
else:
yanchi_yueshu=fractional_part
if yanchi_yueshu>0:
tuixiu_nianling_text+=int(yanchi_yueshu/12)
# 加上月数
new_date = add_months(start_date,int(yanchi_yueshu))
tuixiu_shijian=new_date.strftime('%Y年%m月')
yuefen_text=''
if int(yanchi_yueshu%12)>0:
yuefen_text=str(int(yanchi_yueshu%12))+'个月'
# 定义两个时间
time1 = datetime.now()
time2 = new_date
# 计算时间差
years, months = calculate_years_months(time1, time2)
output_object ={
'tuixiu_nianling':str(tuixiu_nianling_text)+'岁'+yuefen_text, # 改革后法定退休年龄
'tuixiu_shijian':tuixiu_shijian, # 改革后退休时间
'yanchi_yueshu':str(int(yanchi_yueshu))+'个月', # 延迟月数
'type':test,
'chusheng_shijian':str(year)+'年'+str(month)+'月',
'yuan_nianling':str(tuixiu_nianling)+'岁',
'yuan_shijian':start_date.strftime('%Y年%m月'),
'shengyu_value':str(years)+'年'+str(months)+'个月',
}
# 返回输出字典类型变量 output_object,包含代码节点所需的输出数据
return output_object
#计算延迟退休时间
def add_months(start_date, months_to_add):
# 计算新的年份和月份
year = (start_date.year + (start_date.month + months_to_add - 1) // 12)
month = (start_date.month + months_to_add - 1) % 12 + 1
# 获取目标月份的最后一天
last_day_of_month = monthrange(year, month)[1]
# 计算新的日期,确保不超过目标月份的最大天数
day = min(start_date.day, last_day_of_month)
# 创建新的 datetime 对象
new_date = datetime(year, month, day)
return new_date
#计算还剩多少年退休
def calculate_years_months(start_date, end_date):
# 确保 start_date 小于 end_date
if end_date < start_date:
start_date, end_date = end_date, start_date
# 相差年份
year_diff = end_date.year - start_date.year
# 相差月份
month_diff = end_date.month - start_date.month
if month_diff<0:
year_diff-=1
month_diff+=12
return year_diff, month_diff
|