工齡計算方案

2022-06-08 06:33:06 字數 3267 閱讀 4765

根據需求不同,一般工齡計算會有兩種方案,一種是直接以天數表示,一種是以年月日的格式表示。兩種情況的計算的方式不同,所以整理記錄一下。

1、以天數的表示方式

思路:直接用兩個日期相減,得到天數即可

1

from datetime import

datetime23

4def

cal_working_age():

5 current_date =datetime.now().date()

6 begin_date = datetime.strptime("

2010-01-01

", "

%y-%m-%d

").date()78

return (current_date -begin_date).days910

if__name__ == "

__main__":

11print(cal_working_age())

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

思路:以年減年,月減月,日減日,不夠則向前借。比如月不夠減,則向年借12個月,所以這時年要再減一,以此類推。

1

from datetime import

datetime23

4def

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)

1011 delta_year = current_date.year -begin_year

1213 delta_month = current_date.month -begin_month

14if delta_month <0:

15 delta_year -= 1

16 delta_month = 12 +delta_month

1718 delta_day = current_date.day -begin_day

19if delta_day >=0:

20pass

21else

: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

2526 work_age = "

{}年{}月{}日

".format(delta_year, delta_month, delta_day)

2728

return

work_age

2930

if__name__ == "

__main__":

31 begin_date = "

2010-01-01"32

print(cal_working_age_format(begin_date))

3、同樣是以年月日的格式來表示,還有另一種計算方法:

思路:先計算兩個日期的月數差,用這個月數差除以12來算到年,餘數為月,然後用當前時間-(開始時間+月數差)得到天數

1

import

datetime

2import

calendar34

#獲取兩個日期的月數差56

7def

get_months(begin_date, end_date):

8return int(12 * (end_date.year - begin_date.year) +

9 (end_date.month - begin_date.month) + (end_date.day - begin_date.day) / 30)

1011

#給日期加月份

1213

14def

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])

19return

datetime.date(year, month, day)

2021

22if

__name__ == "

__main__":

23 today =datetime.datetime.now().date()

24 group_time = datetime.datetime.strptime("

2013-10-14

", "

%y-%m-%d

").date()

2526 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

3031

print("

{}年{}月{}日

".format(year, month, days))

todo:以後遇到其他工齡計算的方式,再更新。

posgresql 計算工齡工資

每家企業的工齡工資演算法不同,所有根據各自的演算法自行修改,需求 1.工齡基數可設定修改,假設為每年漲200 2.當月的1號到30號,滿一年,則次月開始算工齡工資,所以在次月的下乙個月工資發放時才有算工齡工資 假設 3月1日滿一年,則4月份開始有加工齡工資,所有5月發工資時才有發到工齡工資。3.每月...

如何使用excel計算工齡

今天一位搞財務的mm問我excel計算工齡的問題,我想了想,還真不會啊。搞測試的,寫case,報進度,統計bug一般都是用excel,還真沒弄過計算工齡日期生日之類的。她的要求是 居然不會,想了半天想到2個方案 1 用perl寫個指令碼給她 2 把資訊匯入資料庫,用select 語句查詢再把結果匯出...

如何使用excel計算工齡

今天一位搞財務的mm問我excel計算工齡的問題,我想了想,還真不會啊。搞測試的,寫case,報進度,統計bug一般都是用excel,還真沒弄過計算工齡日期生日之類的。她的要求是 居然不會,想了半天想到2個方案 1 用perl寫個指令碼給她 2 把資訊匯入資料庫,用select 語句查詢再把結果匯出...