Python中生成指定时段内所有30分钟步长的时间间隔组合
生成指定时间段内步长30分钟的所有时长组合
你可以先把目标时间段拆成按30分钟间隔的时间点序列,再用itertools.combinations()来生成所有符合要求的时间对——这个方法完全适用于时间对象,只要你先把时间点整理成可迭代的序列就行。
实现代码
from datetime import datetime, timedelta import itertools # 定义起始和结束时间 start_time = datetime.strptime("9:00", "%H:%M") end_time = datetime.strptime("22:00", "%H:%M") # 生成所有30分钟间隔的时间点 time_points = [] current = start_time while current <= end_time: time_points.append(current) current += timedelta(minutes=30) # 用combinations生成所有起始早于结束的时间对 for start, end in itertools.combinations(time_points, 2): print(f"{start.strftime('%H:%M')} - {end.strftime('%H:%M')}")
代码说明
- 先把字符串格式的时间转成
datetime对象,方便后续的时间运算 - 通过循环生成所有间隔30分钟的时间点,直到达到结束时间
itertools.combinations(time_points, 2)会生成所有长度为2的不重复组合,且组合内的元素保持原序列的顺序,正好对应"起始时间在前,结束时间在后"的要求- 最后用
strftime把时间对象转成你需要的HH:MM格式输出
运行这段代码就能得到你示例里的所有时长组合。
内容的提问来源于stack exchange,提问作者aiv
相关产品推荐
相关产品推荐

