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->+ (12 $diff->y);
$giorni $diff->days;
$ore $diff->+ (24 $diff->days);
$minuti $diff->+ (60 $ore);
$secondi $diff->+ (60 $minuti);

$notti $giorni <= $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 );