根據需求不同,一般工齡計算會有兩種方案,一種是直接以天數表示,一種是以年月日的格式表示,兩種情況的計算的方式不同,所以整理記錄一下,
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, 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))
3、同樣是以年月日的格式來表示,還有另一種計算方法:
思路:先計算兩個日期的月數差,用這個月數差除以12來算到年,余數為月,然后用當前時間-(開始時間+月數差)得到天數
1 import datetime 2 import calendar 3 4 # 獲取兩個日期的月數差 5 6 7 def get_months(begin_date, end_date): 8 return int(12 * (end_date.year - begin_date.year) + 9 (end_date.month - begin_date.month) + (end_date.day - begin_date.day) / 30) 10 11 # 給日期加月份 12 13 14 def add_months(source_date, months): 15 month = source_date.month - 1 + months 16 year = int(source_date.year + month / 12) 17 month = month % 12 + 1 18 day = min(source_date.day, calendar.monthrange(year, month)[1]) 19 return datetime.date(year, month, day) 20 21 22 if __name__ == "__main__": 23 today = datetime.datetime.now().date() 24 group_time = datetime.datetime.strptime("2013-10-14", "%Y-%m-%d").date() 25 26 delta_months = get_months(group_time, today) 27 year = int(delta_months / 12) 28 month = int(delta_months % 12) 29 days = (today - add_months(group_time, delta_months)).days 30 31 print("{}年{}月{}日".format(year, month, days))
TODO:以后遇到其他工齡計算的方式,再更新,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/198238.html
標籤:Python
下一篇:Tensorflow機器學習入門——ModuleNotFoundError: No module named 'tensorflow.keras'
