Python日期间隔百分比

2024-04-29 17:53:06 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有这些分配日期为所有员工工作:

01-JANUARY-2019 TO 31-JANUARY-2019

假设下面的员工已经分配了工作日期,可能是两个或两个以上的员工在同一块板上工作,比如员工A和员工D

Employee A : 01-JANUARY-2019 TO 04-JANUARY-2019

Employee B : 22-JANUARY-2019 TO 25-JANUARY-2019

Employee C : 10-JANUARY-2019 TO 20-JANUARY-2019

Employee D : 02-JANUARY-2019 TO 06-JANUARY-2019

我试着从范围中找出一个一个的日期,然后与slab进行比较,但这需要更多的时间

from datetime import timedelta, date

def daterange(date1, date2):

 for n in range(int ((date2 - date1).days)+1):

     yield date1 + timedelta(n)

因此,预期结果将是:

Total Allocation : 01 January to 31 January == 31 Days

Allocated Employee in Between Dates :

  • 员工A/员工D:1月1日至1月6日=6天
  • 员工C:1月10日至1月20日=11天
  • 员工B:1月22日至1月25日=4天

So Final Gap would expect as result = 31 Days - (6 + 11 + 4) = 10 DAYS


Tags: toinfromimportdatetime时间员工employee
1条回答
网友
1楼 · 发布于 2024-04-29 17:53:06

这正是你所期待的

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)

相关问题 更多 >