Относительные форматы времени не поддерживают «ближайший день» (о котором я знаю). Вы можете сравнить следующие и предыдущие различия, чтобы увидеть, какая из них ближе всего:
function closestWeekday(DateTimeInterface $date, int $dayOfWeek) {
if( !($date instanceof DateTimeImmutable) ) {
$date = DateTimeImmutable::createFromMutable( $date );
}
$dowStr = jddayofweek($dayOfWeek, CAL_DOW_LONG);
$prevDate = $date->modify('previous ' . $dowStr);
$nextDate = $date->modify('this ' . $dowStr);
$prevDiff = $prevDate->diff($date);
$nextDiff = $nextDate->diff($date);
return ($prevDiff->days < $nextDiff->days) ? $prevDate : $nextDate;
}
$wed = new DateTime('wednesday');
$thur = new DateTime('thursday');
// Find closest Sunday to this Wednesday
$closestDay1 = closestWeekday($wed, 6);
// Find closest Sunday to this Thursday
$closestDay2 = closestWeekday($thur, 6);
// Second argument is an integer representing the day of week you want to find
// 0 = Monday, 1 = Tuesday, 2 = Wednesday, ..., 6 = Sunday