Дата в Python пропадает в процентах - PullRequest
0 голосов
/ 31 марта 2019

Предположим, у меня есть следующие даты распределения для всех сотрудников:

01 января 2019 года по 31 января 2019 года

Предположим, что ниже сотрудник уже назначил свои даты для работы, это может быть когда-нибудь работа двух или более сотрудников, работающих вместе в одной плите, как сотрудник A и сотрудник D,

Сотрудник A: с 01 января 2019 года по 04 января 2019 года

Сотрудник B: с 22 января 2019 года по 25 января 2019 года

Сотрудник C: с 10 января 2019 года по 20 января 2019 года

Сотрудник D: с 02 января 2019 года по 06 января 2019 года

Я пытался найти одну за другой даты из диапазона, а затем сравнить их с плитой, но это займет немного больше времени, чем n,

с даты и времени импорта timedelta, дата

def daterange (date1, date2):

 for n in range(int ((date2 - date1).days)+1):

     yield date1 + timedelta(n)

Итак, ожидаемый результат будет:

Общее распределение: с 1 января по 31 января == 31 день

Распределенный сотрудник между датами:

  • Сотрудник A / Сотрудник D: с 1 января по 6 января = 6 дней
  • Сотрудник C: с 10 января по 20 января = 11 дней
  • Сотрудник B: с 22 января по 25 января = 4 дня

Таким образом, итоговый разрыв ожидается как результат = 31 дней - (6 + 11 + 4) = 10 дней

1 Ответ

0 голосов
/ 31 марта 2019

Это будет то, что вы ожидаете

from datetime import datetime, timedelta

work_days = (datetime(day=31, month=1, year=2019) - datetime(day=1, month=1, year=2019)).days
empl_a = (datetime(day=1, month=1, year=2019), datetime(day=4, month=1, year=2019))
empl_b = (datetime(day=22, month=1, year=2019), datetime(day=25, month=1, year=2019))
empl_c = (datetime(day=10, month=1, year=2019), datetime(day=20, month=1, year=2019))
empl_d = (datetime(day=2, month=1, year=2019), datetime(day=6, month=1, year=2019))

total = sum((date2 - date1).days for date1, date2 in (empl_a, empl_b, empl_c, empl_d))
print(work_days - total)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...