Вот пример расчета:
>>> from datetime import datetime
>>> from collections import namedtuple
>>> Range = namedtuple('Range', ['start', 'end'])
>>> r1 = Range(start=datetime(2012, 1, 15), end=datetime(2012, 5, 10))
>>> r2 = Range(start=datetime(2012, 3, 20), end=datetime(2012, 9, 15))
>>> latest_start = max(r1.start, r2.start)
>>> earliest_end = min(r1.end, r2.end)
>>> delta = (earliest_end - latest_start).days + 1
>>> overlap = max(0, delta)
>>> overlap
52
Я обнаружил, что это было потому, что я запускал Prestashop на Laravel Valet с помощью этого драйвера: https://github.com/markahesketh/prestashop-driver-laravel-valet
Он также не отображал изображения продукта правильно. Я подозреваю, что это связано с тем, что Valet запускает Nginx, а не Apache, и бросает Prestashop на переписывание правил из-за ударов.
С тех пор я запускаю его на MAMP с Apache, и все работает нормально!