Qui mi sono spiegato male, secondo me comunque funziona, nel senso che se sei a cavallo di due mesi, dell'ultimo mese considera come notti il giorno di calendario di uscita - 1.
Questo chedo sia automatico, o meglio, bisogna vedere il resto della tua applicazione come lavora, ma se hai un check-in il 30/12 per 7 notti, credo sia automatico che finisci nell'anno nuovo
Anche qui tutto dipende da come imposti il resto del programma.
Per esempio potresti aggiornare un campo "disponibilità" in un db ogni volta che hai una prenotazione