Но почему в переменной startTime значение изменилось?
Потому что в startTime ссылка на объект полученный через $item->getStartTime();
Потому что тут везде все работает по ссылкам?
Не везде, но при работе с объектами применяются ссылки.
Но как мне сделать, чтоб в startTime было постоянно 13:00
Не изменяйте существующий объект startTime, создайте новый объект на основе времени в startTime. Что-то вроде:
(new DateTime())
->setTimestamp($item->getStartTime()->getTimestamp())
->setTimezone($item->getStartTime()->getTimezone())
Можно, конечно, и склонировать, но по сути это совсем другой объект, хоть вы и используете для его создания данные из startTime.