giovedì 22 luglio 2010

[JAVASCRIPT] - Controllo data e Differenza in giorni tra due date

Passando alla funzione le due date controlliamo che la data iniziale non sia maggiore di quella finale e viceversa e che la differenza tra due date, in questo caso, non sia maggiore di 30.
Comunque leggendo lo script c'è la soluzione per trovare la differenza in giorni tra due date.
N.B.: dobbiamo convertire una stringa in data col metodo date() passando la data in formato MM-GG-AAAA.

function ControllaData(data_dal, data_al)
   {
   // PRENDO I DUE CAMPI DATA DAL FORM
   //avvio_previsto = document.info.data_arrivo_hotel.value;
   //consegna_prevista = document.info.data_partenza_hotel.value;
   
   data_dal_ggmmaaaa = data_dal
   data_al_ggmmaaaa = data_al
   
   //SUDDIVIDO I DUE CAMPI IN ANNO MESE E GIORNO
   anno_data_dal = data_dal.substr(6, 4);
   mese_data_dal = data_dal.substr(3, 2);
   giorno_data_dal = data_dal.substr(0, 2);
  
   anno_data_al = data_al.substr(6, 4);
   mese_data_al = data_al.substr(3, 2);
   giorno_data_al = data_al.substr(0, 2);
   
   //anno_oggi = data_oggi.substr(6, 4);
   //mese_oggi = data_oggi.substr(3, 2);
   //giorno_oggi = data_oggi.substr(0, 2);

   
   //trasformo le date nel formato aaaammgg (es. 20081103)
   data_dal_amg = parseInt(anno_data_dal + mese_data_dal + giorno_data_dal, 10);
   data_al_amg = parseInt(anno_data_al + mese_data_al + giorno_data_al, 10);
   //data_today = parseInt(anno_oggi + mese_oggi + giorno_oggi, 10);
   
   //var my_date = new Date()
   //my_date.getDate()
   
var data1 = new Date(mese_data_dal + "-" + giorno_data_dal + "-" + anno_data_dal);
var data2 = new Date(mese_data_al + "-" + giorno_data_al + "-" + anno_data_al);
var one_day=1000*60*60*24;
giornidiff = Math.ceil((data2.getTime()-data1.getTime())/(one_day))
/*alert(data1);
alert(data2);
alert(one_day);
alert(giornidiff);*/

//alert (data2);

   if (data_dal_amg - data_al_amg > 0)
       {
alert("La data INIZIALE non può essere SUCCESSIVA alla DATA FINALE!");
document.info.data_dal.value = data_al_ggmmaaaa;
document.info.data_dal.focus();
err = true
       return err;
}
else if  (data_dal_amg - data_dal_amg < 0) 
{
alert("La DATA FINALE non può essere ANTECEDENTE alla data INIZIALE!");
document.info.data_al.value = data_dal_ggmmaaaa;
document.info.data_al.focus();
err = true
       return err;
}
else if  (giornidiff > 30) 
{
alert("La DATA FINALE non può essere MAGGIORE DI 30 giorni rispetto alla data INIZIALE!");
document.info.data_al.value = data_dal_ggmmaaaa;
document.info.data_al.focus();
err = true
       return err;
}
   else
       {
err = false
       return err;
       }
   }