Sempre problemi con le date!!

Posted venerdì 14 maggio 2004 10.33 by lorenzo

Ho notato un comportamento "strano" nella gestione delle date in Javascript che (almeno per quanto ne so io che non sono certamente il maggiore esperto di questo linguaggio) non è documentato.

Se si valorizza una data con uno script di questo tipo

var dataI = new Date();
dataI.setDate(31);
dataI.setMonth(12);
dataI.setFullYear(2004);

in certi casi particolari si può ottenere che la data contenuta alla fine nella variabile sia 1/12/2004 anzichè 31/12/2004.
Questo è dovuto al fatto che le variabili di tipo data nel momento in cui vengono create contengono la data del giorno (data di sistema).
Valorizzando la variabile per parti (giorno, mese ed anno) si ottiene che, se il mese della data di sistema è di 30 giorni e si inserisce 31 come giorno, la data sia modificata dalla variabile stessa.

Se la data iniziale è
12/04/2004
e si inserisce per primo il giorno uguale a 31, la data sarà impostata a
01/04/2004
poiché non sarebbe una data valida il 31/04/2004.
Anche se poi successivamente si inserisce un mese che ha 31 giorni, la "conversione" ormai è fatta e si ottiene una data diversa da quella inserita.
La cosa si può risolvere molto semplicemente impostando prima l'anno, poi il mese e solo alla fine il giorno.

var dataI = new Date();
dataI.setFullYear(2004);
dataI.setMonth(12);
dataI.setDate(31);


Link: www.braidi.com
Filed under:

Comments

No Comments