Как проверить заданный интервал времени с расписанием в Python? - PullRequest
0 голосов
/ 15 декабря 2018

Я написал несколько строк кода (python 3.7), чтобы проверить заданный момент во времени, который соответствует временному интервалу в таблице времени.Для этого я использую модуль pythons datetime.Моя проблема в том, что я не знаю, как это проверить на период во времени.Во время поиска ответа я пролистал множество смежных тем, но не смог найти ничего достаточно близкого.

Я получил это за момент времени (отметка времени)

псевдокод :

time_point = 11:00
timeslot_1 = 10:00 - 12:00
timeslot_2 = 12:00 - 14:00

def check_interval(time_unit):
    if time_unit within timeslot_1:
      return timetable_interval_1
    if time_unit within timeslot_2:
      return timetable_interval_2
    else:
      return False

check_interval(time_point)

вывод:

10:00 - 12:00

Но я бы хотел знать это на протяжении периода времени (интервал между двумя временными метками)

псевдокод :

time_period = 11:00 - 12:30
timeslot_1 = 10:00 - 12:00
timeslot_2 = 12:00 - 14:00

def check_interval(time_unit):
    if time_unit within timeslot_1:
      return timeslot_1
    if time_unit within timeslot_2:
      return timeslot_2
    if time_unit within timeslot_1 and within timeslot_2:
      return timeslot_1 + timeslot_2
    else:
      return False

check_interval(time_period)

выход

10:00 - 14:00

1 Ответ

0 голосов
/ 15 декабря 2018

Вы можете использовать time для определения временных точек и кортежей времен для представления интервалов.Например:

from datetime import time

time_period = time(11), time(12, 30)
timeslot_1 = time(10), time(12)
timeslot_2 = time(12), time(14)

def check_interval(period):
    if timeslot_1[0] <= period[0] <= period[1] <= timeslot_1[1]:
      return timeslot_1
    if timeslot_2[0] <= period[0] <= period[1] <= timeslot_2[1]:
      return timeslot_2
    if timeslot_1[0] <= period[0] <= period[1] <= timeslot_2[1]:
      return timeslot_1[0], timeslot_2[1]
    else:
      return False

print(check_interval((time(11), time(12, 30))))
# prints (datetime.time(10, 0), datetime.time(14, 0))

print(check_interval((time(9), time(12, 30))))
# prints False
...