Se volete testare l'indirizzo è: jam-session.net/new/prenotazione.php
Il problema me lo da, ad esempio, se inserisco come orario inizio 17:00 per la durata di 2 ore.

Ecco la parte di codice interessata. Nel caso possa servire posterò i vari metodi.
E' un pò incasinato essendo un prototipo:

Codice PHP:
if (!isset($_POST["prenota2"])){// se ancora non è stato scelto nessun noleggio stampo i noleggi disponibili
            
$s=estraiPrenotazione($_GET["prenota"]);
            
$idnoleggi=verificaPossibiliNoleggi($s[0],$s[1]); //s0=idprova; s1=data
            
echo "PROVA SCELTA ------> ";
            echo 
stampaPrenotazione($s);
            echo 
"
"
;
            echo 
"<form id=\"form1\" name=\"form1\" method=\"post\"> ";
            
stampaNoleggiDisponibili($idnoleggi,$s[0],$s[1],$s[2]);
            echo 
"<input type=\"submit\" value=\"Prenota\" name=\"prenota2\" />";
            echo 
"</form>";
        }
        else {
//se ho già visualizzato i noleggi creo un oggetto DatiPrenotazione
            
$s=estraiPrenotazione($_GET["prenota"]);//s(idprova,data,USP,USS,USW)
            
$idnoleggi=verificaPossibiliNoleggi($s[0],$s[1]); //s0=idprova; s1=data
            
if ($msg==true/*$auth=auth_get_uid();*/ $auth=$user["username"];
            else 
$auth=auth_generate_uid();
                    
            
$datiPrenotazione=new DatiPrenotazione(convertiData(dataAttuale()),$s[0],0,$auth,0,convertiData($s[1]),$s[2],null);
                
            
$noleggi=array();
            
$contatoreNoleggi=0;
            for(
$i=0;$i<count($idnoleggi);$i++)
                    if (isset(
$_POST["idnoleggio".$i]))
                    {
                        
$str="idnoleggio".$i;
                        
$idnol=explode("_",$_POST[$str]);
                        
$noleggi[]=new Noleggio(convertiData($s[1]),$idnol[0],$s[5],$s[6],$s[0]);
                        
$contatoreNoleggi++;
                    }
            if (
$contatoreNoleggi==0)
                
$noleggi=null;
            
$datiPrenotazione->setNoleggi(base64_encode(serialize($noleggi)));
            
            
            
//elimino la precedente sessionePrenotazione
            
$query="DELETE FROM `sessioniprenotazioni` WHERE uid='".$auth."'";
            
$risultato mysql_query($query);
            
            
$query ="INSERT INTO `sessioniprenotazioni` ( `uid` ,`datiprenotazione`,`scadenza`) VALUES ( '".$auth."','".(base64_encode(serialize($datiPrenotazione)))."','".(time()+(60*60))."');";
            
$risultato mysql_query($query);
            
setcookie("auth",$auth,time()+(60*60));
            
        
header("Refresh: 0;URL=step2.php");
        }