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