1、要实现图表如下图
2、后台的数据结构
说明:将每个小时按10分钟为一个时间间隔,分成6段,00、10、20、30、40、50然后将每个时间段组成如下数据:{
'time': '22:30', 'start': '0', 'end': '10'}{'time': '22:40', 'start': '0', 'end': '5'}
实现的代码:
from datetime import datetime, timedelta
def parse_time_interval(start_time, end_time):
"""
将每个小时按10分钟为一个时间间隔,分成6段,00、10、20、30、40、50
然后将每个时间段组成如下数据:
{'time': '22:30', 'start': '0', 'end': '10'}
{'time': '22:40', 'start': '0', 'end': '5'}
"""
# 分析开始和结束时间字符串
start_time = datetime.strptime(start_time, '%H:%M')
end_time = datetime.strptime(end_time, '%H:%M')
# 定义时间间隔
time_intervals = []
current_time = datetime(start_time.year, start_time.month, start_time.day, start_time.hour)
# 每小时循环10分钟
while current_time < end_time:
next_time = current_time + timedelta(minutes=10)
if next_time > end_time:
next_time = end_time
interval_start = current_time.strftime('%H:%M')
interval_end = next_time.strftime('%H:%M')
# 确定间隔内的开始和结束分钟
start_minute = (start_time - current_time).seconds // 60
end_minute = (end_time - current_time).seconds // 60
# 针对边缘情况进行调整
if start_minute > 10:
start_minute = 0
if end_minute > 10:
end_minute = 10
interval = {
'time': interval_start,
'start': str(start_minute),
'end': str(end_minute)
}
time_intervals.append(interval)
current_time = next_time
return time_intervals
start_time = '13:07'
end_time = '16:45'
result = parse_time_interval(start_time, end_time)
for interval in result:
print(interval)
实现
心有猛虎,细嗅蔷薇