Почему strtotime вместо одного дня прибавляет целый месяц?
$nextDay = strtotime(date('Y-d-m', strtotime('+1 day', $startTime)));
Уберите лишние телодвижения.$nextDay = strtotime('+1 day', $startTime);
Внешний strtotime немного не в курсе что вы поменяли местами месяц и день.
strtotime использует стандартный формат 'Y-m-d'$nextDay = strtotime(date('Y-d-m', strtotime('+1 day', $startTime)));
Здесь вы сначала получаете дату в 'Y-d-m', затем распознаёте её как 'Y-m-d'. Соответственно, день и месяц у вас меняются местами.