Любая помощь была бы удивительной, так как я не могу понять это.
На данный момент у меня есть объект даты и времени (например, «2017-01-05 23:22:27») и выбранный пользователем интервал повторения (например, каждые 2 дня между понедельником (1) и пятницей (5)). получить текущий день недели из datetime с
$dayOfWeek = date("w", time($dateObject->timestamp));
Но я понятия не имею, чтобы проверить, что это в будние дни, и если это за пределами, как рассчитать дополнительные дни, чтобы он снова находился в пределах интервала, и добавить это к дате.
Например, если среда является четвертой, после выполнения этой процедуры необходимо будет вернуться с датой-временем 6-го числа, после повторной проверки потребуется 9-е, поскольку это следующий день, который находится внутри интервал дня недели
Я использую CakePHP 3 и Chronos, если это поможет.
Вместо date("w", time($dateObject->timestamp))
ты можешь использовать date('l',...)
для сокращенного дня недели (т.е. понедельник, вторник и т. д.) или вы можете использовать date('d',...)
для полного имени (т.е. понедельник, вторник и т. д.).
Если вы назначаете числовое значение для каждого дня, используйте массив для хранения каждого:
$days = array(0 => 'Sunday', 1 => 'Monday', 2 => 'Tuesday', 3 => 'Wednesday', 4 => 'Thursday', 5 => 'Friday', 6 => 'Saturday');
Если вы решили использовать короткое имя в приведенном выше date()
функция, просто замените полный день недели в $days
вместо этого массив с трехбуквенным именем.
Так как вы используете числовое отображение для дней недели, вы можете использовать 0-6 в условных (if/else
) заявления, чтобы определить, находится ли он в интервале или нет.
Вот документация PHP.net по date()
функция наряду с форматированием символов: Функция PHP.net date ()
Других решений пока нет …