• 工龄计算方案


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

    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:以后遇到其他工龄计算的方式,再更新。

  • 相关阅读:
    前端CSS部分简单整理
    前端HTML部分简单整理
    Top Android App使用的组件
    使用DialogFragment创建对话框总结
    Rails常用命令
    developer.android.com笔记
    Google Maps API v2 Demo Tutorial
    Android学习的一些问题
    Android学习过程
    Beginning Android 4 Programming Book学习
  • 原文地址:https://www.cnblogs.com/dream2sky/p/12287614.html
Copyright © 2020-2023  润新知