Script javascript: Confrontare due date

   difficoltà:  script script script script script

Script simili
2/4/2008


Con questa funzione si potrà comparare due date inserite in un form. Questo sarà utile per fare un primo controllo lato client. Questo script si potrà usare quando bisognerà inserire due date e controllare che una data sia successiva ad un altra e viceversa.

In particolare, ad esempio, quando si sceglie la data di inizio e la data di fine di una prenotazione,in cui la prima data dovrà per forza essere precedente alla seconda, o nell'inserimento del periodo di validità di una news, o semplicemente per fare una ricerca di elementi in un certo periodo di tempo, quindi inserendo la data di inizio e quella di fine.

Il primo passaggio sarà di controllare se il formato della data inserito è corretto nel formato gg/mm/aaaa. Per questo usufruiremo della funzione di controlla validità di una data che abbiamo già visto qui:
Script javascript: Controllo validità formato ed esistenza data

Nel caso una delle due date avesse il formato data errato visualizzeremo un alert di errore.
Ora non ci resta che confrontare le due date. Per questo trasformiamo le date nel formato anno mese giorno così aaaammgg per cui il giorno 03/11/2008 diventerà 20081103.
In questo modo potremo confrontare 2 numeri. Se sottraendo alla seconda data così formatta la prima otterremo 0 vorrà dire che le date sono uguali, se otterremo un numero maggiore di 0 la seconda data sarà successiva, in caso la differenza dia un numero negativo la seconda data sarà precedente la prima per cui dovremo dare errore.

Di seguito la funzione completa per la comparazione di due date, insieme al controllo di validità del formato vista nel precedente script:

<script>
// spiegazione di controllo_data() nello script originale (vedi link sopra)
function controllo_data(stringa){
var espressione = /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/;
if (!espressione.test(stringa))
{
return false;
}else{
anno = parseInt(stringa.substr(6),10);
mese = parseInt(stringa.substr(3, 2),10);
giorno = parseInt(stringa.substr(0, 2),10);

var data=new Date(anno, mese-1, giorno);
if(data.getFullYear()==anno && data.getMonth()+1==mese && data.getDate()==giorno){
return true;
}else{
return false;
}
}
}



function confronta_data(data1, data2){
// controllo validità formato data
if(controllo_data(data1) &&controllo_data(data2)){
//trasformo le date nel formato aaaammgg (es. 20081103)
data1str = data1.substr(6)+data1.substr(3, 2)+data1.substr(0, 2);
data2str = data2.substr(6)+data2.substr(3, 2)+data2.substr(0, 2);
//controllo se la seconda data è successiva alla prima
if (data2str-data1str<0) {
alert("La data iniziale deve essere precedente quella finale");
}else{
alert("ok");
}
}else{
alert("Il formato data deve essere gg/mm/aaaa");
}
}

confronta_data("20/02/2008", "04/03/2008");
</script>


Social:


Donazione:
Se questo script ti è stato utile e ti ho fatto risparmiare tempo e denaro fai una
qualsiasi cifra è ben accetta! 1€, 3€, 5€ ,10€, 50€ ;-) fai te!

Permalink: Tag:
data   confronto   php   script  
Script Simili: Permalink: Link utili:
Tools:
Feed RSS    



Commenti


  pippo

31/7/2009 16:42:38

good very nice

  john

11/12/2009 20:09:34

Only with the same year ...!?

  luigi

2/2/2012 18:13:05

!!!bugfix reporting for support!!!
l'alert :
alert("Il formato data deve essere gg/mm/aaaa");

secondo me sarebbe piu giusto così:
alert("Il formato data deve essere gg/mm/aaaa inserendo il 29 febbraio solo per gli anni bisestili");

a buon intenditor poche parole.
!!!bugfix reporting for support!!!

  luigi

2/2/2012 18:13:57

!!!bugfix reporting for support!!!
l'alert :
alert("Il formato data deve essere gg/mm/aaaa");

secondo me sarebbe piu giusto così:
alert("Il formato data deve essere gg/mm/aaaa inserendo il 29 febbraio solo per gli anni bisestili");

a buon intenditor poche parole.
!!!bugfix reporting for support!!!



Lascia un commento


Codice di controllo*:
Nome*:
Email/Link:
Testo*:
 
I campi contrassegnati con * sono obbligatori.