PHP 7.1.7
Есть рабочая функция, с которой я имею дело, которая имеет собственную «неделю» (где «неделя» для этой функции — с субботы по пятницу).
Для любого данного дня недели, как я могу установить две переменные, чтобы содержать начало пользовательской определенной недели (суббота) и конец пользовательской определенной недели (пятница).
Итак, если бы у меня была дата 8-11-17, мне нужно было бы найти переменную начальной даты, содержащую 8-05-17, и переменную конечной даты, содержащую 8-11-17.
Спасибо
Не уверен, правильно ли я понял вопрос, но это то, что вы ищете?
Он использует strtotime (), чтобы найти предыдущую субботу на входе. Затем в следующую пятницу с той субботы.
$Input = "08/12/2017";
if(date("l", strtotime($Input)) == "Saturday"){
$Saturday = strtotime($Input);
}else{
$Saturday = strtotime($Input . " previous saturday");
}
$Friday = strtotime(date("m/d/Y", $Saturday) . " next friday");
echo date("m/d/Y", $Saturday) . " to " . date("m/d/Y", $Friday);
РЕДАКТИРОВАТЬ; Я просто заметил, что если вход — суббота, мой код выбрал неправильные даты. Исправленный.
Вы можете использовать дату (‘w’), чтобы определить день недели для данной даты.
Если найденное число меньше 6, переместите это число + 1 назад. Это ваша начальная дата. Дата окончания будет 7 дней спустя:
<?php
$date = new DateTime('08-11-2017');
$daynumber = $date->format('w');
if($daynumber < 6) {
$tomove = $daynumber + 1;
$date->modify('-' . $tomove.'day');
}
$startdate = $date;
$enddate = clone $date;
$enddate->modify('+7day');
echo $startdate->format('d-m-y');
echo $enddate->format('d-m-y');
?>
редактировать
забыл слово «день» в модификации