2015-10-22 13 views
0

Как найти разницу во времени между двумя объектами datetime в Python?Разница во времени между объектами datetime в Python

Бизнес-время может быть 9-17

Я хотел бы также рассмотреть праздники. У меня есть функция is_holiday(date), которая берет объект даты.

+0

Считаете ли вы использование 'datetime.timedelta'? Вы должны опубликовать код примера того, что вы пробовали, чтобы получить дополнительную помощь. –

+0

кажется ['businesstime' пакет делает именно то, что вы хотите (я его не использовал).] (Https://github.com/seatgeek/businesstime) – jfs

ответ

0
def buisiness_time_between(datetime1, datetime2): 
    return business_time_after(datetime1) + 
     (business_time_per_day * days_between(datetime1,datetime2)) + 
     business_time_before(datetime2) 

Я уверен, что вы можете понять, как реализовать business_time_after, business_time_before, business_time_per_day и days_between

0

Я действительно не найти простой вещий ответ на эту проблему.

Пакет businesstime, предлагаемый J.F. Sebastian, делает то, что я хотел, но я думаю, что алгоритмы могут быть оптимизированы и упрощены. Например, если мы изменим модель дня, мы можем использовать стандартные операции datetime python.

Я стараюсь быть более ясным: если наш рабочий день 9-17, мы можем сказать, что наш день сделан 8h, а не 24h. Итак, 9: 00-> 0:00 и 17: 00-> 08:00. Теперь нам нужно создать функцию, которая преобразует реальное время в нашу новую модель следующим образом:

  • , если это время меньше нашего времени начала (09:00), мы не делаем позаботьтесь об этом, и мы преобразуем его в 00:00
  • Если это время для бизнеса, мы конвертируем вычитание времени начала, например 13:37 становится 04:37
  • , если это время больше нашего времени остановки (17:00), нас это не волнует, и мы конвертируем его в 08:00

После этого преобразования все расчеты можно сделать легко wi го пакета datetime python, как и в обычном datetime.

Спасибо, что ответ user2085282 вы можете найти эту концепцию, реализованную в репо django-business-time.

С преобразованием модели, я нашел очень легко добавить еще одну особенность: обеденный перерыв

В самом деле, если у вас есть обеденный перерыв 12-13, вы можете сопоставить в новой модели день все раз внутри интервала до 12. Но обратите внимание, чтобы конвертировать также время после 13, учитывая один час перерыва на обед.

Прошу прощения за то, что я разработал приложение Django, а не пакет Python. Но на данный момент это работает для меня. И извините за мой код, я новичок :)

PS: полная документация в ближайшее время!

Смежные вопросы