python - 两个日期之间的小时数,不包括周末
问题描述
我想要提及日期之间的总小时数,不包括周末(周六、周日)。
```
start_time = datetime.datetime(2021, 7, 1, 22, 45, 25)
end_time = datetime.datetime(2021, 7, 15, 10, 00, 00)
```
解决方案
我的答案需要一个额外的库(NumPy)
关键要素:
- numpy.busday_count统计工作日数
- datetime.timedelta (1) 省略开始日期(通过 if-else 检查以计算分钟数)
- isoweekday () 返回 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
推荐阅读
- excel - 在另一个单元格中累积一个单元格的值的总和
- python - python opencv检测图像中的曲线点
- google-maps - 我们可以为 xamarin 形式的 android 和 xamarin 形式的 ios 使用单个 google map api 密钥吗?
- javascript - 用 d3 模拟音频波形
- google-api - 以编程方式批准驱动器文件访问请求
- reactjs - 仅当用户看到完整的视频组件时,如何以 react-native 播放视频?
- rest - sharepoint Addin 中的身份验证
- linux - 代理后面的 Docker 需要在启动时重新启动
- spring - 添加 javax.servlet-api 依赖项会引发 org.slf4j.impl.StaticLoggerBinder 无法加载但我不使用 sl4j 的异常,我使用的是 thymeleaf
- facebook-graph-api - Facebook API 查询子对象