Я действительно не найти простой вещий ответ на эту проблему.
Пакет 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: полная документация в ближайшее время!
Считаете ли вы использование 'datetime.timedelta'? Вы должны опубликовать код примера того, что вы пробовали, чтобы получить дополнительную помощь. –
кажется ['businesstime' пакет делает именно то, что вы хотите (я его не использовал).] (Https://github.com/seatgeek/businesstime) – jfs