Confronti tra date in Javascript: un esempio pratico

Attraverso Javascript è possibile effettuare confronti tra due date cioè, in parole semplici, verificare se due date sono uguali oppure se una è maggiore o minore di un altra. Un simile controllo risulta determinante in talune applicazioni che prevedono, ad esempio, una data di inizio ed una di fine e dove, pertanto, è opportuno poter verificare che vi sia una coerenza tra tali date.

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 (nome del campo: checkin), quello di abbandono della camera (checkout) e la data odierna (today).

All'interno del nostro ipotetico modulo le date vengono inserite nel formato italiano utilizzando come separatore il trattino:

GG-MM-AAAA

Le variabili su cui lavorare saranno quindi le seguenti:

Continua dopo la pubblicità...
var data_iniziale = document.nome_form.checkin.value;
var data_finale = document.nome_form.checkout.value;
var data_oggi = document.nome_form.today.value;

Ora che abbiamo creato delle variabili con i valori trasmessi dal form possiamo procedere alla loro manipolazione: 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 per le date 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 sarà in grado di "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.

I commenti degli utenti

I commenti sono sottoposti alle linee guida di moderazione e prima di essere visibili devono essere approvati da un moderatore.