两个日期之间的小时数,不包括周末
Number of hours between two dates, excluding weekend
我想要提及日期之间的总小时数,不包括周末(周六、周日)。
```
start_time = datetime.datetime(2021, 7, 1, 22, 45, 25)
end_time = datetime.datetime(2021, 7, 15, 10, 00, 00)
```
这样做就可以了:
busdays = np.busday_count(start_time.date(), end_time.date())
我的答案需要一个额外的库 (NumPy)
关键要素:
- numpy.busday_count要统计工作日的天数
- datetime.timedelta(1) 省略开始日期(通过 if-else 检查以计算分钟数)
- isoweekday() returns 取值在1到7之间,1为周一,7为周日
步骤:
- 跳过开始和结束日期并找到有效的中间日期。乘以 24(每天总小时数)
- 检查开始日是否为工作日并计算结束该日期的剩余总小时数
- 检查结束日是否为工作日并计算当天经过的总小时数
import datetime
import numpy as np
start_time = datetime.datetime(2021, 7, 1, 22, 45, 25)
end_time = datetime.datetime(2021, 7, 15, 10, 00, 00)
#Step 1.
total_hours=np.busday_count(start_time.date()+datetime.timedelta(1),end_time.date())*24 #already not counting last date
#Step2.
if start_time.isoweekday() in range(1, 6):
total_hours=total_hours+24-start_time.hour-start_time.minute/60-start_time.second/3600
#Step 3.
if end_time.isoweekday() in range(1, 6):
total_hours=total_hours+end_time.hour+end_time.minute/60+end_time.second/3600
print(total_hours)
output: 227.24305555555554
from BusinessHours import BusinessHours
import datetime
start_time = datetime.datetime(2021, 7, 1, 22, 45, 25)
end_time = datetime.datetime(2021, 7, 15, 10, 00, 00)
hours = BusinessHours(start_time, end_time, worktiming=[9, 18], weekends=[6, 7], holidayfile=None)
print(hours.gethours())
这可能对您有所帮助,有关详细信息,请参阅 python 中的 BusinessHours 模块!
我想要提及日期之间的总小时数,不包括周末(周六、周日)。
```
start_time = datetime.datetime(2021, 7, 1, 22, 45, 25)
end_time = datetime.datetime(2021, 7, 15, 10, 00, 00)
```
这样做就可以了:
busdays = np.busday_count(start_time.date(), end_time.date())
我的答案需要一个额外的库 (NumPy)
关键要素:
- numpy.busday_count要统计工作日的天数
- datetime.timedelta(1) 省略开始日期(通过 if-else 检查以计算分钟数)
- isoweekday() returns 取值在1到7之间,1为周一,7为周日
步骤:
- 跳过开始和结束日期并找到有效的中间日期。乘以 24(每天总小时数)
- 检查开始日是否为工作日并计算结束该日期的剩余总小时数
- 检查结束日是否为工作日并计算当天经过的总小时数
import datetime
import numpy as np
start_time = datetime.datetime(2021, 7, 1, 22, 45, 25)
end_time = datetime.datetime(2021, 7, 15, 10, 00, 00)
#Step 1.
total_hours=np.busday_count(start_time.date()+datetime.timedelta(1),end_time.date())*24 #already not counting last date
#Step2.
if start_time.isoweekday() in range(1, 6):
total_hours=total_hours+24-start_time.hour-start_time.minute/60-start_time.second/3600
#Step 3.
if end_time.isoweekday() in range(1, 6):
total_hours=total_hours+end_time.hour+end_time.minute/60+end_time.second/3600
print(total_hours)
output: 227.24305555555554
from BusinessHours import BusinessHours
import datetime
start_time = datetime.datetime(2021, 7, 1, 22, 45, 25)
end_time = datetime.datetime(2021, 7, 15, 10, 00, 00)
hours = BusinessHours(start_time, end_time, worktiming=[9, 18], weekends=[6, 7], holidayfile=None)
print(hours.gethours())
这可能对您有所帮助,有关详细信息,请参阅 python 中的 BusinessHours 模块!