具有工作时间上下文的日期时间列表,计算非工作时间
List of datetimes with the context of working hours, calculate non working hours
所以我有一组工作时间(轮班),即日期时间格式的起点和终点的元组。一个人可以在同一天进行多个班次:
from datetime import datetime
shift1_1 = datetime(year=2019, month=8, day=21, hour=8)
shift1_2 = datetime(year=2019, month=8, day=21, hour=11)
shift2_1 = datetime(year=2019, month=8, day=21, hour=12)
shift2_2 = datetime(year=2019, month=8, day=21, hour=17)
shift3_1 = datetime(year=2019, month=8, day=22, hour=8)
shift3_2 = datetime(year=2019, month=8, day=22, hour=10)
shift4_1 = datetime(year=2019, month=8, day=22, hour=12)
shift4_2 = datetime(year=2019, month=8, day=22, hour=15)
shift5_1 = datetime(year=2019, month=8, day=22, hour=17)
shift5_2 = datetime(year=2019, month=8, day=22, hour=19)
shifts = [(shift1_1,shift1_2), (shift2_1,shift2_2), (shift3_1,shift3_2), (shift4_1,shift4_2),(shift5_1,shift5_2)]
我要计算补数,所以非工作时间起止点。
如何解决这个问题?至于现在,我还没有找到实用的计算方法。有人知道这个问题的算法吗?
如有任何正确方向的提示,我将不胜感激。
这个怎么样:
off_times = []
for i in range(shifts - 1):
off_times.append((shifts[i][1], shifts[i + 1][0]))
我在
的 post 的帮助下弄明白了
我在轮班列表中生成了一个天数列表。然后我遍历所有轮班并将它们分成单个日期时间列表。
然后我每天:
- 创建一个空列表
- 为给定日期的开始和结束分别创建一个日期时间对象
- 添加一天的开始
- 过滤我的单个轮班日期时间列表以匹配给定日期并循环遍历此过滤器,将日期时间添加到我的列表
- 使用 pairwise iteration 我可以创建新的元组并将它们添加到 off_times 列表
最后我得到了一个新的元组数组,其中包含我的 off_times。
所以我有一组工作时间(轮班),即日期时间格式的起点和终点的元组。一个人可以在同一天进行多个班次:
from datetime import datetime
shift1_1 = datetime(year=2019, month=8, day=21, hour=8)
shift1_2 = datetime(year=2019, month=8, day=21, hour=11)
shift2_1 = datetime(year=2019, month=8, day=21, hour=12)
shift2_2 = datetime(year=2019, month=8, day=21, hour=17)
shift3_1 = datetime(year=2019, month=8, day=22, hour=8)
shift3_2 = datetime(year=2019, month=8, day=22, hour=10)
shift4_1 = datetime(year=2019, month=8, day=22, hour=12)
shift4_2 = datetime(year=2019, month=8, day=22, hour=15)
shift5_1 = datetime(year=2019, month=8, day=22, hour=17)
shift5_2 = datetime(year=2019, month=8, day=22, hour=19)
shifts = [(shift1_1,shift1_2), (shift2_1,shift2_2), (shift3_1,shift3_2), (shift4_1,shift4_2),(shift5_1,shift5_2)]
我要计算补数,所以非工作时间起止点。
如何解决这个问题?至于现在,我还没有找到实用的计算方法。有人知道这个问题的算法吗?
如有任何正确方向的提示,我将不胜感激。
这个怎么样:
off_times = []
for i in range(shifts - 1):
off_times.append((shifts[i][1], shifts[i + 1][0]))
我在
我在轮班列表中生成了一个天数列表。然后我遍历所有轮班并将它们分成单个日期时间列表。 然后我每天:
- 创建一个空列表
- 为给定日期的开始和结束分别创建一个日期时间对象
- 添加一天的开始
- 过滤我的单个轮班日期时间列表以匹配给定日期并循环遍历此过滤器,将日期时间添加到我的列表
- 使用 pairwise iteration 我可以创建新的元组并将它们添加到 off_times 列表
最后我得到了一个新的元组数组,其中包含我的 off_times。