Python创建开始时间到结束时间之间的时间段列表

Jay*_*tel 1 python python-2.7

我有start_date, end_date, from time, end time, 和slot in min详细信息,我需要按照以下预期创建一个时间段列表

import datetime

start_time = '9:00'
end_time = '18:00'
slot_time = 10

# Start date from today to next 5 day
start_date = datetime.datetime.now().date()
end_date = datetime.datetime.now().date() + datetime.timedelta(days=5)
Run Code Online (Sandbox Code Playgroud)

预期输出(start_dateend_date = 总共5 天

['9:00', '9:10', '9:20', '9:30', '9:40', '9:50', '10:00', '10:10', ..., '17.50', '18:00']
['9:00', '9:10', '9:20', '9:30', '9:40', '9:50', '10:00', '10:10', ..., '17.50', '18:00']
['9:00', '9:10', '9:20', '9:30', '9:40', '9:50', '10:00', '10:10', ..., '17.50', '18:00']
['9:00', '9:10', '9:20', '9:30', '9:40', '9:50', '10:00', '10:10', ..., '17.50', '18:00']
['9:00', '9:10', '9:20', '9:30', '9:40', '9:50', '10:00', '10:10', ..., '17.50', '18:00']
Run Code Online (Sandbox Code Playgroud)

我的插槽时间不固定,根据插槽创建的输出列表可以是 10、15、20、30 分钟

如果我的插槽时间 = 15

预期输出(start_dateend_date = 总共5 天

['9:15', '9:30', '9:45', '10:00', '10:15', ..., '17.45', '18:00']
['9:15', '9:30', '9:45', '10:00', '10:15', ..., '17.45', '18:00']
['9:15', '9:30', '9:45', '10:00', '10:15', ..., '17.45', '18:00']
['9:15', '9:30', '9:45', '10:00', '10:15', ..., '17.45', '18:00']
['9:15', '9:30', '9:45', '10:00', '10:15', ..., '17.45', '18:00']
Run Code Online (Sandbox Code Playgroud)

Thy*_*st' 5

您可以只迭代所需的天数,然后在所需的小时数内添加嵌套迭代。为了能够比较对象,您需要将字符串转换为datetime具有strptime函数的对象。最后,您可以使用object.strftime方法获得任意格式的输出datetime

import datetime

start_time = '9:00'
end_time = '18:00'
slot_time = 10

# Start date from today to next 5 day
start_date = datetime.datetime.now().date()
end_date = datetime.datetime.now().date() + datetime.timedelta(days=5)

days = []
date = start_date
while date <= end_date:
    hours = []
    time = datetime.datetime.strptime(start_time, '%H:%M')
    end = datetime.datetime.strptime(end_time, '%H:%M')
    while time <= end:
        hours.append(time.strftime("%H:%M"))
        time += datetime.timedelta(minutes=slot_time)
    date += datetime.timedelta(days=1)
    days.append(hours)

for hours in days:
    print(hours)
Run Code Online (Sandbox Code Playgroud)