Newsgroup: it.comp.lang.javascript
Titolo: controllo: data immessa > data odierna

Scusate la banalità (sono un neofita in js), ma non riesco a
scrivere/trovare un algoritmo breve per controllare che la data immessa sia
successiva alla data odierna. Io ho scritto quanto segue
(hddday,hddmon,hddyea sono 3 campi del form) ma se pongo g1=30, m1=3 e
a1=2003, ottengo dataNumero=2003030030 (e quindi successiva a 20030903
[oggiNumero])!!!
Qualcuno ha un algoritmo efficace?
Grazie,
Donato
var oggi=new Date();
var gg=oggi.getDate();
var mm=oggi.getMonth()+1;
var aa=oggi.getFullYear();
var g1=aForm.hddday.value;
var m1=aForm.hddmon.value;
var a1=aForm.hddyea.value;
oggiNumero=aa*10000+mm*100+gg;
dataNumero=a1*10000+m1*100+g1;
if (dataNumero<oggiNumero)
{
alert("Immettere una data non inferiore alla data odierna !");
return false;
}

 ha scritto nel messaggio
news:2hl5b.10567$R32.3...@news2.tin.it...


 [cut]
Piu' pulito
function test() {
var aForm = document.forms[0];
var oggi = new Date();
var dataImmessa = new Date( parseInt(aForm.hddyea.value), 
parseInt(aForm.hddmon.value)-1, parseInt(aForm.hddday.value) ); if( 
dataImmessa<oggi ) {
   alert("Immettere una data non inferiore alla data odierna !");
   return false;
} else {
   alert("Ok");
   return true;
}
}
Ciao.
 -Ema-

Grazie! č quello che volevo!
ma ho ancora un problema:
in
var dataImmessa = new Date( parseInt(aForm.hddyea.value),
parseInt(aForm.hddmon.value)-1, parseInt(aForm.hddday.value) );
ottengo la data con un giorno in meno
(ovvero: se immetto 3/9/2003, parseInt(aForm.hddday.value)  mi da 3, ma
dataImmessa che ne risulta č 2/9/2003)
... devo aggiungere 1???


altro problema:
se scrivo 09 nel mese, mi diventa 0 nella data
"-Ema-" <a@a.a> ha scritto nel messaggio news:Usenet.fgsfgbrt@localhost...


 
Prova con 
var dataImmessa = new Date( aForm.hddyea.value, aForm.hddmon.value-1, 
aForm.hddday.value ); 
Ciao.
 -Ema-

 }
Questo script non e' del tutto corretto per un paio di fattori:
a) Non specifichi la base relativamente al parseInt, e per una funzione 
del genere puo' essere un problema, potrebbe farti la conversione in 
ottale. :) devi quindi scrivere: 
parseInt(aForm.hddyea.value,10)
oppure, piu' stringato:
+aForm.hddyea.value
Quindi:
var dataImmessa = new Date( +aForm.hddyea.value, 
				/* qui non necessita */
				aForm.hddmon.value-1, 
				 +aForm.hddday.value );
b) se mette la data odierna come input gli risulta cmq inferiore, 
perche' tu crei l'oggetto dataImmessa con 
ore/minuti/secondi/millisecondi pari a zero. Il che significa che 
sara' sempre e cmq inferiore (a meno che uno non inserisca il valore 
ESATTAMENTE allo scoccare della mezzanotte, ma deve beccare il 
millisecondo giusto ^_^ )
Puoi quindi risolvere o impostando l'oggetto date con la data odierna 
ma con ore/minuti/secondi/millisecondi pari a zero, oppure creando 
l'oggetto "dataImmessa" e fornendogli ore/minuti/secondi/millisecondi 
recuperandole dall'oggetto "oggi".
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

+aForm.hddday.value );
continua a trasformarmi la data con un giorno in meno... :(
 Donato

 
Giustissimo!
Ciao.
 -Ema-

 continua a trasformarmi la data con un giorno in meno... :(
Prova a mettere un alert come il seguente:
alert( dataImmessa );
A me torna la data corretta.
Non e' che per caso usi getDay? Questo torna il giorno della settimana.
0 for Sunday, 1 for Monday, 2 for Tuesday, and so on
oggi quindi torna 2.
Per il giorno del mese devi usare getDate.
Ciao.
 -Ema-

 A me torna la data corretta.
Ecco cos'era successo: conoscendo pochissimo javascript e pescando a caso in
Internet ho trovato il metodo toGMTString() e ho usato quello per
visualizzare la data immessa, dimenticandomi del fuso orario!!!
Giustamente dataImmessa indica la mezzanotte, quindi a Greenwich risulta un
giorno indietro! (perché poi l'ora mostrata sia 22:00 (e non 23:00), non lo
so...)
Grazie a tutti!

 continua a trasformarmi la data con un giorno in meno... :(
E da dove lo vedi? Non e' che lo ripeschi nel modo sbagliato? Fai un 
document.write o un alert dell'oggetto cosi' lo vedi subito.
Magari, come ha giustamente indicato -Ema-, usi getDay() al posto di 
getDate().


 Giustissimo!
E' un errore abbastanza comune. :)


 Tue Jan 11 22:00:00 UTC+0100 1977
Lo restituisce (a colui da cui lo aveva preso)
Grazie!
Donato