Prendiamo in considerazione un esempio pratico, cioè un form per la prenotazione alberghiera in cui l’utente dovrà selezionare una data per il check-in e una per il check-out; dato che stiamo lavorando sulle date, sarà fondamentale poter effettuare dei confronti sulla base dei parametri inviati attraverso il modulo, i nostri valori di riferimento saranno quindi il giorno di ingresso, quello di abbandono della camera e la data odierna.
Le variabili su cui lavorare saranno quindi le seguenti:
var data_iniziale = document.nome_form.checkin.value; var data_finale = document.nome_form.checkout.value; var data_oggi = document.nome_form.today.value;
Relativamente al formato utilizzato per le date, in questo post ci riferiremo a quello nostrano, “gg-mm-aaaa“, utilizzando il simbolo “-” come separatore; le date sono manipolabili come degli array, per cui dovremo recuperare i valori che compongono i tre diversi vettori:
var arr1 = data_iniziale.split("-");
var arr2 = data_finale.split("-");
var arr3 = data_oggi.split("-");
Avendo “esploso” i nostri “array” sulla base del separatore scelto, ora potremo riposizionarne i valori utilizzando il formato standard che prevede un ordine in cui l’anno precede il mese e il giorno:
var d1 = new Date(arr1[2],arr1[1]-1,arr1[0]); var d2 = new Date(arr2[2],arr2[1]-1,arr2[0]); var d3 = new Date(arr3[2],arr3[1]-1,arr3[0]);
Ora JavaScript dovrà “riconoscere” le nuove variabili come delle date, per cui utilizzeremo l’apposita funzionalità getTime():
var r1 = d1.getTime(); var r2 = d2.getTime(); var r3 = d3.getTime();
A questo punto non dovremo fare altro che definire i confronti da operare sui parametri inviati dal form, ad esempio:
if (r1>=r2) {
alert("La data iniziale non deve essere successiva o uguale a quella finale.");
}
else if (r3>r1) {
alert("La data iniziale non deve essere precedente a quella odierna.");
}
Naturalmente, nulla vieta di integrare il codice proposto in uno script più completo che preveda di effettuare controlli su un numero maggiore di parametri (nome, cognome, email, etc..).









