假设我有以下分配日期可用于所有员工:
2019年1月1日至2019年1月31日
假设下面的员工已经分配了工作日期,可能是某个时间,有两个或多个员工在同一平板中一起工作,例如员工A和员工D,
员工A:2019年1月1日至2019年1月4日
员工B:2019年1月22日至2019年1月25日
员工C:2019年1月10日至2019年1月20日
员工D:2019年1月2日至2019年1月6日
我试图从范围中逐一找出日期,然后与平板进行比较,但是这将花费更多的时间n复杂,
从日期时间导入时间增量开始,日期
def daterange(date1,date2):
for n in range(int ((date2 - date1).days)+1):
yield date1 + timedelta(n)
所以预期结果将是:
总分配:1月1日至1月31日== 31天
在两个日期之间分配的员工:
因此,最终差距预期为结果= 31天-(6 + 11 + 4)= 10天
答案 0 :(得分:0)
这就是您所期望的
from datetime import datetime, timedelta
work_days = (datetime(day=31, month=1, year=2019) - datetime(day=1, month=1, year=2019)).days
empl_a = (datetime(day=1, month=1, year=2019), datetime(day=4, month=1, year=2019))
empl_b = (datetime(day=22, month=1, year=2019), datetime(day=25, month=1, year=2019))
empl_c = (datetime(day=10, month=1, year=2019), datetime(day=20, month=1, year=2019))
empl_d = (datetime(day=2, month=1, year=2019), datetime(day=6, month=1, year=2019))
total = sum((date2 - date1).days for date1, date2 in (empl_a, empl_b, empl_c, empl_d))
print(work_days - total)