2015-08-10 3 views
0

Я пытаюсь написать программу, которая позволяет пользователю выбирать время встречи из списка доступных дней недели. Мне нужна помощь в том, как использовать модуль datetime, чтобы выполнить это, а не то, что я придумал.Использование модуля datetime для установки временных интервалов

avail_days = {'Mon': ['8:00AM', '8:30AM', '9:00AM', '10:00AM', '10:30AM', '11:00AM', '11:30AM', '12:00AM'], 'Tues': ['8:00AM', '8:30AM', '9:00AM', '10:00AM', '10:30AM', '11:00AM', '11:30AM', '12:00AM']} 

Каждая встреча должна длиться 30 минут, а свободные дни должны быть в будние дни с 8 утра до 12 вечера.

+1

вам нужно сделать какой-то расчет на это время делать? Я не вижу проблем с простым «списком» строк, если вы просто хотите отслеживать, какие из них доступны. – TigerhawkT3

+0

Я не понимаю, в чем проблема – Brambor

+0

Я хочу, чтобы найти доступные даты и вернуть их пользователю в формате календаря. – deluxdamp3

ответ

0

Когда дело доходит до диапазонов дат, я нахожу Delorean пакет, и это stops() Функция весьма полезна, понятна и удобна. Предполагая, что вы хотите, чтобы программно генерировать временные диапазоны для каждого дня между двумя DateTimes, вот пример реализации:

from datetime import datetime, timedelta 

from delorean import stops 
import delorean 

start = datetime.today() 
stop = datetime.today() + timedelta(7) 

for day in stops(freq=delorean.DAILY, start=start, stop=stop): 
    start = day.naive().replace(hour=8, minute=0) 
    stop = day.naive().replace(hour=12, minute=0) 

    for t in stops(freq=delorean.MINUTELY, interval=30, start=start, stop=stop): 
     print t.datetime.strftime("%A %H:%M") 

Печать:

Monday 08:00 
Monday 08:30 
Monday 09:00 
Monday 09:30 
Monday 10:00 
Monday 10:30 
Monday 11:00 
Monday 11:30 
Monday 12:00 
Tuesday 08:00 
Tuesday 08:30 
Tuesday 09:00 
Tuesday 09:30 
Tuesday 10:00 
Tuesday 10:30 
Tuesday 11:00 
Tuesday 11:30 
Tuesday 12:00 
Wednesday 08:00 
Wednesday 08:30 
Wednesday 09:00 
Wednesday 09:30 
Wednesday 10:00 
Wednesday 10:30 
Wednesday 11:00 
Wednesday 11:30 
Wednesday 12:00 
... 
Sunday 08:00 
Sunday 08:30 
Sunday 09:00 
Sunday 09:30 
Sunday 10:00 
Sunday 10:30 
Sunday 11:00 
Sunday 11:30 
Sunday 12:00 
Monday 08:00 
Monday 08:30 
Monday 09:00 
Monday 09:30 
Monday 10:00 
Monday 10:30 
Monday 11:00 
Monday 11:30 
Monday 12:00 
Смежные вопросы