Я пытаюсь получить дату только четверга каждой недели на основе общего ввода недели в цикле.
Пример, который я поставил на 4 недели вперед, означает, что с текущей недели до следующих 4 недель будет использоваться дата четверга.
Что я сделал до сих пор:
$totalWeek = 4;
for($i=0; $i<$totalWeek ; $i++) {
$getDateEveryThursday = strtotime("next Thursday");
$convertDate = date('d-m-Y', $getDateEveryThursday);
}
Ожидаемый результат, если текущая дата и время наступает до 20:00 четверга:
21-SEP-2023
28-SEP-2023
05-OCT-2023
12-OCT-2023
Кроме того, если текущая дата-время — четверг и равна или позже 20:01, даты должны быть:
28-SEP-2023
05-OCT-2023
12-OCT-2023
19-OCT-2023
Тематически связанные: Получите еженедельные даты в понедельник, пятницу, X раз и Получите даты всех пятниц в данном году и, конечно, вы можете просто добавить +$i weeks в свой strtotime() вызов, например PHP, чтобы заполнить раскрывающийся список. список с конкретными датами Кстати, где в вашем коде упоминание об обрезке 8pm?






Вы были почти там. Учитывая имеющийся у вас код, вы можете сделать:
$weeks = 4;
$date = "";
for($weekNo = 0; $weekNo < $weeks; $weekNo++) {
$thursday = strtotime("next Thursday " . $date);
$date = date('d-m-Y', $thursday);
echo $date . "\n";
}
Что в настоящее время вернет:
21-09-2023
28-09-2023
05-10-2023
12-10-2023
Единственное реальное изменение заключается в том, что я передаю дату вашего возвращения в функцию strtotime(), чтобы указать этой функции, с чего начать.
Смотрите демо: https://3v4l.org/kQKm6
Если вы хотите добавить смену на следующий четверг, в четверг после 20:00, вам нужно добавить немного, чтобы пропустить неделю вперед, например:
$weeks = 4;
$date = "";
if ((date("l") == "Thursday") && (date('H') >= 20)) {
$date = date('d-m-Y', strtotime("next Thursday"));
}
for($weekNo = 0; $weekNo < $weeks; $weekNo++) {
$thursday = strtotime("next Thursday " . $date);
$date = date('d-m-Y', $thursday);
echo $date . "\n";
}
Смотрите демо: https://3v4l.org/tfBU1
Почему вы хотите, чтобы он переключился в 20:00?