¿Por qué Javascript trata los días y los meses de manera diferente?


42

Me di cuenta de que en JavaScript, al crear un Date, los meses son cero y los días no.

Por ejemplo:

var foo = new Date(2012, 1, 1)

produce el 1 de febrero de 2012

¿Por qué es esto?


66
months = ['Jan', 'Feb',..., 'Nov', 'Dec']; month = months[date.getMonth()];
zzzzBov

Respuestas:


50

Lo más probable es que la idea sea que los meses se consideren como un índice en una serie de nombres de meses, mientras que los días simplemente se "cuentan".


21
Cuando esto tiene sentido desde el punto de vista de la respuesta, es una locura pensar que esta lógica ha existido durante tanto tiempo y nunca la he cuestionado antes.
rlemon

2
@rlemon El hecho de que nunca antes hayas cuestionado esa lógica solo prueba que tiene sentido :)
dasblinkenlight

14
FWIW, nunca pensé que tuviera mucho sentido. El procesamiento de fechas en JavaScript siempre fue algo que me hizo estremecer, porque generalmente olvidaba cosas como esta hasta que comencé a depurar resultados extraños.
FrustratedWithFormsDesigner

2
FWIW, no soy un desarrollador front-end y a menudo no tengo que lidiar con fechas en Javascript aparte de los ocasionalesnew Date().getTime()
rlemon

20
Cuando se trata de Javascript, "es por eso que lo hicieron" y "esto tiene sentido" son dos cosas que rara vez se escuchan juntas.
Tridus

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.