У меня есть значение дня недели, доступное в формате PHP («N», $ stamp) формат + время с начальным часом события.Я хочу показать дату следующей недели, если событие уже началось, и дату этой недели, если это произойдет в будущем.Временной горизонт составляет 7 дней, поэтому, если «сейчас» прошло, ожидаемое повторение наступает через 7 дней.
Пример
now() is tuesday, 2/10/2018, 13:00
$row['weekday'] = 2 (for tuesday)
$row['time'] = 13:01
$next should be 9/10/2018
против
now() is tuesday, 2/10/2018, 13:00
$row['weekday'] = 2 (for tuesday)
$row['time'] = 12:00
$next should be 2/10/2018
Вот документация PHP в формате времени "N":
N Числовое представление дня недели в ISO-8601 (добавлено в PHP 5.1.0) 1 (дляС понедельника по 7 (для воскресенья)
Я немного исследовал и не смог найти никакого решения для этого.Единственное, что я нашел, было это , на котором я основал следующий (некрасивый, нерабочий) код.
$next = (intval(date("N", strtotime("now"))) !== intval($row['weekday']))
?
(
date("d.m.Y", strtotime(
date("Y-m-d", strtotime("now")-strtotime("+". (date("w", strtotime("now")) +0) ." day"))
)+strtotime("+".$row['weekday']." day"))
)
:
(
(
(strtotime("now"))
<
(( strtotime(
date("Y-m-d", strtotime("now")-strtotime("+". (date("w", strtotime("now")) +0) ." day"))
)+strtotime("+".$row['weekday']." day")+strtotime($row['time'])))
)
?
(date("d.m.Y", strtotime("now")))
:
(date("d.m.Y", strtotime("now +1 week")))
)
)
Есть идеи, как справиться с этим?