Corsi on-line

Confronti sulle date in tempo reale con JavaScript

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..).

 

Post correlati
I più letti del mese
Tematiche