2009-05-07 13 views
10

Intenté obtener el día de una semana con la función getDay() del objeto Date en Javascript. En teoría funciona bien, pero a veces hay un retraso en la salida, por lo que si la función devuelve un "4", devuelve un "1".¿Por qué getDay devuelve valores incorrectos? (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 

Realmente no sé por qué sucede esto. Este ejemplo proviene de IE8. FF 3 se comporta de forma similar, pero devuelve valores diferentes. El primero es 7, no 4. El segundo es como en IE8.

¿Alguna idea de por qué sucede esto?

Respuesta

16

Porque el número de mes se basa en cero, no en uno.

new Date("2009","04","30") crea un objeto Date para el 30 de mayo , no el 30 de abril.

(La razón por la que es cero en base histórica es, probablemente, es decir, se comporta igual que un método de una manera diferente sistema de atrás en el tiempo ...)

+0

no me importa cuál sea la razón, no es suficientemente bueno. Los meses basados ​​en cero son ESTÚPIDOS. Pero estamos atrapados con ellos ... suspiro ... – RolandTumble

+1

Bueno, no todos los idiomas ... El constructor DateTime (int, int, int) en .NET usa un número de mes basado en uno. – Guffa

+1

Muchas gracias, odio Javascript por este tipo de cosas estúpidas ... -.- – SvenFinke

Cuestiones relacionadas