Funkce Javascript Date.UTC() je o měsíc vypnutá?

Hrál jsem si s Javascriptem, který vytvořil jednoduché odpočítávací hodiny, když jsem narazil na toto podivné chování:

var a = new Date(), 
now = a.getTime(),
then = Date.UTC(2009,10,31),
diff = then - now,
daysleft = parseInt(diff/(24*60*60*1000));
console.log(daysleft );

Zbývající dny jsou o 30 dní pryč.

Co je na tomto kódu špatného?

Edit:Změnil jsem názvy proměnných, aby to bylo jasnější.

Odpověď

Měsíc je pro JavaScript založen na nule.

Dny a roky jsou založeny na jednom.

Jdi na to.

AKTUALIZACE

Důvod, proč tomu tak je, od tvůrce JavaScriptu je

JS musel „vypadat jako Java“, jen méně, být Jávovým hloupým dětským bratrem nebo chlapcem-rukojmím. Navíc jsem musel být hotový za deset dní nebo se stalo něco horšího, než by se stalo JS.

http://www.jwz.org/blog/2010/10/every-day-i-learn-something-new-and-stupid/#comment-1021