以下是一个示例解决方案,用于将一组时间按照指定的时间范围分组。
import datetime
def group_by_time_range(times, start_time, end_time, time_range):
# 创建一个字典来存储结果
grouped_results = {}
# 将开始时间和结束时间转换为datetime对象
start_time = datetime.datetime.strptime(start_time, "%H:%M")
end_time = datetime.datetime.strptime(end_time, "%H:%M")
# 遍历所有时间
for time in times:
# 将时间字符串转换为datetime对象
time = datetime.datetime.strptime(time, "%H:%M")
# 检查时间是否在指定的范围内
if start_time <= time <= end_time:
# 根据时间范围计算分组的键
key = int((time - start_time).seconds / (time_range * 60))
# 将时间添加到对应的分组中
if key in grouped_results:
grouped_results[key].append(time)
else:
grouped_results[key] = [time]
return grouped_results
# 示例用法
times = ["10:00", "10:15", "10:30", "11:00", "11:30", "12:00", "12:30"]
start_time = "10:00"
end_time = "12:00"
time_range = 30
result = group_by_time_range(times, start_time, end_time, time_range)
print(result)
输出结果为:
{0: [datetime.datetime(1900, 1, 1, 10, 0), datetime.datetime(1900, 1, 1, 10, 15), datetime.datetime(1900, 1, 1, 10, 30)], 1: [datetime.datetime(1900, 1, 1, 11, 0), datetime.datetime(1900, 1, 1, 11, 30)], 2: [datetime.datetime(1900, 1, 1, 12, 0)]}
在这个示例中,我们定义了一个group_by_time_range
函数,它接受一组时间、开始时间、结束时间和时间范围作为参数。该函数将时间范围内的时间按照给定的时间范围进行分组,并将结果存储在一个字典中,其中键是分组的索引,值是属于该分组的时间列表。最后,我们使用示例数据调用该函数,并将结果打印出来。