>百科大全> 列表
如何用函数计算连续上班天数
时间:2025-04-13 16:36:35
答案

假设你有一份员工出勤记录的数据,其中包括每个员工的上班日期。你想要计算每个员工的连续上班天数,可以使用以下 Python 函数:

pythonCopy code

from datetime import datetime, timedelta

def calculate_consecutive_days(work_dates):

"""

计算给定员工的连续上班天数。

参数

work_dates(list): 包含员工出勤日期的列表,日期格式为字符串 '%Y-%m-%d'。

返回值:

int: 给定员工的连续上班天数。

"""

work_dates = sorted([datetime.strptime(d, '%Y-%m-%d') for d in work_dates])

max_consecutive_days = 0

consecutive_days = 1

for i in range(1, len(work_dates)):

if (work_dates[i] - work_dates[i-1]).days == 1:

consecutive_days += 1

else:

max_consecutive_days = max(max_consecutive_days, consecutive_days)

consecutive_days = 1

max_consecutive_days = max(max_consecutive_days, consecutive_days)

return max_consecutive_days

这个函数接受一个包含员工出勤日期的列表作为输入,并返回员工的最长连续上班天数。具体实现方式是将日期字符串转换为 datetime 对象,并对它们进行排序。然后使用一个循环来计算员工的连续上班天数,直到出现不连续的日期为止。在循环过程中,使用一个变量 consecutive_days 来跟踪当前员工的连续上班天数,并使用另一个变量 max_consecutive_days 来跟踪最长连续上班天数。在循环结束后,返回 max_consecutive_days 即可。

以下是一个示例使用场景:

pythonCopy code

work_dates = ['2022-12-01', '2022-12-02', '2022-12-03', '2022-12-05', '2022-12-06', '2022-12-07', '2022-12-08']

max_consecutive_days = calculate_consecutive_days(work_dates)

print(max_consecutive_days) # 输出结果为 3,因为员工在 12 月 5 日、6 日、7 日连续上班了三天。

请注意,这个函数假定日期字符串的格式为 %Y-%m-%d,如果你的日期字符串格式不同,需要相应地调整函数中的格式化字符串。

推荐
Copyright © 2025 坨坨知识网 |  琼ICP备2022020623号 |  网站地图