Я делаю приложение, которое дает скидки для пользователей, а одна из скидок дается в день его рождения.Поскольку действительно трудно использовать скидку только в день вашего рождения, мы решили предоставить скидку всю неделю, включая оба выходных.
Некоторые правила
- Учитывая дату рождения,скидка начнется в предыдущую пятницу дня рождения;
- Скидка заканчивается через 10 дней после старта, в воскресенье;
- Если день рождения в пятницу, все равно получите последнюю пятницу перед этим;
Хорошо, поэтому нам нужен метод, который получает birthdayDate
и todayDate
и верните значение true или false, сообщая, находится ли дата в диапазоне дня рождения.
Проблема
Все выглядит хорошо, пока вы не начнете смотреть на даты, близкие к смене года.
Если ваш день рождения 31 декабря 2018 года, вы можете использовать скидку 6 января 2019 года, точно так же, если ваш день рождения 1 января 2019 года, 28 декабря 2018 года вы уже можете использовать скидку.
Так что взглянуть только на день рождения текущего года недостаточно, и, поскольку дни недели меняются каждый год, последняя пятница вашего дня рождения в этом году не будет тем же днем следующего.
Существует элегантный способ легко найти этот диапазон и создать метод, возвращающий true или false?
Реальная проблема в том, чтобы найти, какой день рождения является релевантным днем рождения, так как вы можете получить скидку на корметвой последний день рождения и до твоего следующего дня рождения.
Исходный код написан на PHP, но так как это проблема алгоритма, я могу принимать ответы на любом языке
Контрольные примеры
| Today | Birth | Output |
|-------------------|-------------------|:------:|
| February 15, 2019 | February 22, 2000 | true |
| February 24, 2019 | February 22, 2000 | true |
| February 25, 2019 | February 22, 2000 | false |
| December 28, 2018 | January 03, 2000 | true |
| December 27, 2018 | January 03, 2000 | false |
| December 27, 2019 | January 03, 2000 | true |
| January 01, 2019 | January 03, 2000 | true |
| January 01, 2019 | December 31, 2000 | true |
| January 01, 2019 | December 28, 2000 | false |