Secondo me per il calcolo delle notti andrebbe bene una cosa del genere:
Codice PHP:
<?php
$from = new \DateTime('2015-01-01 00:00:00');
$to = new \DateTime('2016-05-01 23:59:00');
$diff = $from->diff($to);
$anni = $diff->y;
$mesi = $diff->m + (12 * $diff->y);
$giorni = $diff->days;
$ore = $diff->h + (24 * $diff->days);
$minuti = $diff->i + (60 * $ore);
$secondi = $diff->s + (60 * $minuti);
$notti = $giorni <= 0 ? 1 : $giorni; //possiamo fregarcene degli orari e dire che anche se prenoto per 1 giorno (days == 0) considero sempre almeno una notte
echo "sono passati: \n";
echo sprintf("anni: %s \n mesi: %s \n giorni: %s \n ore: %s \n minuti: %s \n secondi: %s \n notti: %s",
$anni, $mesi, $giorni, $ore, $minuti, $secondi, $notti );