工龄计算方案

根据需求不同,一般工龄计算会有两种方案,一种是直接以天数表示,一种是以年月日的格式表示。两种情况的计算的方式不同,所以整理记录一下。

1、以天数的表示方式

  思路:直接用两个日期相减,得到天数即可

 1 from datetime import datetime
 2 
 3 
 4 def cal_working_age():
 5     current_date = datetime.now().date()
 6     begin_date = datetime.strptime("2010-01-01", "%Y-%m-%d").date()
 7 
 8     return (current_date - begin_date).days
 9 
10 if __name__ == "__main__":
11     print(cal_working_age())

 

2、以年月日的格式来表示

  思路:以年减年,月减月,日减日,不够则向前借。比如月不够减,则向年借12个月,所以这时年要再减一,以此类推。

 1 from datetime import datetime
 2 
 3 
 4 def cal_working_age_format(begin_date_str):
 5     current_date = datetime.now().date()
 6     begin_date = datetime.strptime(begin_date_str, "%Y-%m-%d").date()
 7     begin_year = int(begin_date.year)
 8     begin_month = int(begin_date.month)
 9     begin_day = int(begin_date.day)
10 
11     delta_year = current_date.year - begin_year
12     
13     delta_month = current_date.month - begin_month
14     if delta_month < 0:
15         delta_year -= 1
16         delta_month = 12 + delta_month
17         
18     delta_day = current_date.day - begin_day
19     if delta_day >= 0:
20         pass
21     else:
22         delta_month-=1
23         last_month_days = (datetime.datetime(year=current_date.year, month=current_date.month+1, day=1)-datetime.timedelta(days=1)).day
24         delta_day = last_month_days + delta_day
25 
26     work_age = "{}年{}月{}日".format(delta_year, delta_month, delta_day)
27 
28     return work_age
29 
30 if __name__ == "__main__":
31     begin_date = "2010-01-01"
32     print(cal_working_age_format(begin_date))

 

TODO:以后遇到其他工龄计算的方式,再更新。

 

你可能感兴趣的:(工龄计算方案)