2009-05-07 2 views
10

ho cercato di ottenere il giorno di una settimana con la funzione getDay() dell'oggetto Date in Javascript. In teoria funziona bene, ma a volte c'è un ritardo nell'output, quindi se la funzione dovesse restituire un "4", restituisce un "1".Perché getDay restituisce valori errati? (Javascript)

E.g.

var date= new Date("2009","04","30"); 
alert(date.getDay()); // the function returns 6, should return 4 

var date= new Date("2009","05","01"); 
alert(date.getDay()); // the function returns 1, should return 5 

Non so davvero perché questo accade. Questo esempio viene da IE8. FF 3 si comporta in modo simile, ma restituisce valori diversi. Il primo è 7, non 4. Il secondo è proprio come in IE8.

Tutte le idee perché questo accade?

risposta

16

Poiché il numero del mese è pari a zero in base, non uno basato.

new Date("2009","04","30") crea un oggetto Date per il 30 maggio , non il 30 aprile.

(Il motivo per cui è basato lo zero è probabilmente storico, vale a dire che si comporta come un metodo in modo diverso sistema di tornare indietro nel tempo ...)

+0

non mi importa quale sia la ragione, non è abbastanza buono. I mesi zero sono STUPIDI. Ma siamo bloccati con loro ... sigh .... – RolandTumble

+1

Be ', non tutte le lingue ... La DateTime (int, int, int) costruttore in .NET utilizza un numero mese in base uno. – Guffa

+1

Grazie mille, io odio Javascript per questo genere di cose stupide ... -.- – SvenFinke