|
|
|
| Здравствуйте!
Голову сломал, выдумывая логику функции способной понимать каждый четвертый месяц с произвольной даты.
Месяц = 30 дней.
Задача: скидка -50% на каждый четвертый месяц аренды. Реально на каждые 30 дней после 90 дней
Аренда может быть много лет, не циклом же переберать для каждого клиента.
Быть может есть красивое решение?
Спасибо | |
|
|
|
|
|
|
|
для: Sywooch
(15.11.2016 в 14:17)
| | Делить номер месяца по модулю 4 проблема? | |
|
|
|
|
|
|
|
для: confirm
(15.11.2016 в 15:16)
| | Спасибо за ответ!
Номер месяца к календарю привязан!
А мне надо старт с любой даты, где месяц условный, равен 30 дням.
То есть 90 дней = 3 месяца.. return false;
91 уже четвертый и до 120... return true;
с 121 return false;
Дней может быть 100500+
Вот мне и любопытно как максимально красиво и грамотно это реализовать.
Имеете ввиду ( ($day/30)%4) ? | |
|
|
|
|
|
|
|
для: Sywooch
(15.11.2016 в 16:00)
| | Ну если вас интересуют не действительные месяца, а период по 30 календарных дней, можно и так.
Номер месяца всегда будет привязан к календарю, ибо стартовалась же когда-то эта приблуда, и стартовалась то она по календарю. Что мешает от даты старта отнимать текущую дату, а из полученного уже узнать период?
У вас проблема создана на ровном месте. | |
|
|
|
|
|
|
|
для: confirm
(15.11.2016 в 16:39)
| | Я с вами согласен, на ровном месте!
Как и любая из проблем.
Это надо и в калькулятор на angular добавить.
Вот так работает:
<?php
$day = 100500;
$manth = ceil($day/30);
if((($manth % 4) == 4) || (($manth % 4) == 0)) {
echo 'true';
}
else {
echo 'false';
}
?>
|
Не уверен, что лучшее решение, но как костыль пока пусть повисит.
Спасибо | |
|
|
|
|
|
|
|
для: Sywooch
(15.11.2016 в 16:48)
| | Вот это что такое - ($math % 4) == 4?
if(!($math % 4)) ... это и есть кратно 4, и есть false, в остальных случаях true. | |
|
|
|