SvenFinke
SvenFinke

Reputation: 1254

Why does getDay return incorrect values? (javascript)

I tried to get the day of a week with the getDay() function of the Date object in Javascript. In theory it works fine, but sometimes there is a delay in the output, so if the function should return a "4", it returns a "1".

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

I really don't know why this happens. This example comes from IE8. FF 3 behaves similar, but returns different values. The first one is 7, not 4. The second one is just like in IE8.

Any ideas why this happens?

Upvotes: 13

Views: 6127

Answers (1)

Guffa
Guffa

Reputation: 700800

Because the month number is zero based, not one based.

new Date("2009","04","30") creates a Date object for the 30th of may, not the 30th of april.

(The reason why it's zero based is probably historic, i.e. it behaves the same as some method in a different system way back in time...)

Upvotes: 19

Related Questions