PHP выбрать даты пользовательского диапазона недели

PHP 7.1.7

Есть рабочая функция, с которой я имею дело, которая имеет собственную «неделю» (где «неделя» для этой функции — с субботы по пятницу).

Для любого данного дня недели, как я могу установить две переменные, чтобы содержать начало пользовательской определенной недели (суббота) и конец пользовательской определенной недели (пятница).

Итак, если бы у меня была дата 8-11-17, мне нужно было бы найти переменную начальной даты, содержащую 8-05-17, и переменную конечной даты, содержащую 8-11-17.

Спасибо

1

Решение

Не уверен, правильно ли я понял вопрос, но это то, что вы ищете?
Он использует 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);

https://3v4l.org/l4g8D

РЕДАКТИРОВАТЬ; Я просто заметил, что если вход — суббота, мой код выбрал неправильные даты. Исправленный.

2

Другие решения

Вы можете использовать дату (‘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');
?>

редактировать

забыл слово «день» в модификации

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector