У меня есть система бронирования, в которой пользователи могут забронировать номер в любое время и на любое количество непрерывных дней. Бронирование производится в зависимости от количества минут, в течение которого комната используется.
В системе бронирования время начала и окончания представлено двумя временными метками. например
start_time = 1397124000 end_time = 1397129400
Из этого я могу рассчитать количество забронированных секунд и, следовательно, рассчитать заряд.
Проблема в том, что я хотел бы рассчитать 50-процентную скидку на любые заказы, сделанные из пиковых времен – до 8 утра и после 6 вечера. Заказы могут быть сделаны в течение этих времен (т.е. 7 утра-9 утра), и поэтому соответствующая доля должна быть снижена (50% скидка на 7-8-часовую часть бронирования 7-9 утра).
Мой код для вычисления этого становится чрезвычайно запутанным и сложным, так как существует несколько сценариев:
На данный момент, пытаясь выяснить, какая часть бронирования находится в течение этих до 8 часов, период скидок после 6 вечера, когда только с отметкой времени начала и конца очень сложно.
Мой код – очень большая серия тестов if
и else
с началом и временем окончания, но он не устойчив к бронированию, который охватывает более одного дня и в противном случае очень грязный.
Я ищу метод, который может легко подсчитать, какая доля заказа находится в пределах дисконтированного времени, что объясняет все возможные сценарии. Трудная проблема!