При планировании работы с персоналом (Python 2.7) у меня есть для определенного человека список рабочих дней (и раз) в isoWeek .
С указанной датой я пытаюсьчтобы определить, когда будет следующая дата, когда сотрудник будет доступен.
working_days = {
1:
{
'start': datetime.time(8, 0),
'end': datetime.time(17, 15)
},
2:
{
'start': datetime.time(7, 45),
'end': datetime.time(17, 0)
},
3:
{
'start': datetime.time(8, 0),
'end': datetime.time(16, 45)
},
4:
{
'start': datetime.time(10, 0),
'end': datetime.time(15, 30)
},
5:
{
'start': datetime.time(8, 30),
'end': datetime.time(17, 15)
}
}
searched_date = datetime.datetime(2018, 6, 13, 20, 57, 00) // Wednesday
searched_date_week_day = searched_date.isoweekday()
ожидаемый результат: datetime.datetime (2018, 6, 14, 10, 00, 00) // четверг в10
Я хотел бы просто использовать будни для достижения этого результата, но у меня есть сомнения по этому поводу.
То, что я написал, обмануто на простейшем примере (мое время поискабольше, чем время окончания работы персонала)
next_working_day = next((x for x in working_days if x >= searched_date_week_day), None)
дает: 3, среда
Учитывая, что у меня будут более сложные случаи (давайте представим, моя дата поискав воскресенье, isoweek 7, не работает), мой единственный выход - преобразовать мои рабочие дни в какой-то список datetime.datetime
?
Fiddle