year not month getfullyear getday day javascript date

not - javascript get day of month



¿Por qué Javascript getYear() devuelve 108? (14)

¡Esta pregunta es tan antigua que me hace llorar de nostalgia por los días de las puntocom!

Así es, Date.getYear () devuelve el número de años desde 1900, al igual que Perl''s localtime (). Uno se pregunta por qué un lenguaje diseñado en la década de 1990 no explicaría la rotación del siglo, pero ¿qué puedo decir? Había que estar allí. De alguna manera tuvo un sentido en ese momento (como lo hizo pets.com).

Antes del año 2000, uno podría haber tenido la tentación de solucionar este error al agregar "19" al resultado de getYear () dando como resultado el "error del año 19100" . Otros ya han respondido esta pregunta lo suficiente (agregue 1900 al resultado de getDate ()).

Tal vez el libro que estás leyendo sobre JavaScript es un poco viejo?

¡Gracias por la explosión del pasado!

¿Por qué este javascript devuelve 108 en lugar de 2008? ¿El día y el mes son correctos pero no el año?

myDate = new Date(); year = myDate.getYear();

año = 108?


Como getFullYear no funciona en navegadores antiguos, puedes usar algo como esto:

Date.prototype.getRealYear = function() { if(this.getFullYear) return this.getFullYear(); else return this.getYear() + 1900; };

El prototipo Javascript se puede usar para extender objetos existentes, al igual que los métodos de extensión C #. Ahora, podemos hacer esto;

var myDate = new Date(); myDate.getRealYear(); // Outputs 2008


Como otros han dicho, devuelve el número de años desde 1900. La razón por la que lo hace es que cuando JavaScript se inventó a mediados de los años 90, ese comportamiento era conveniente y coherente con las API de fecha y hora en otros idiomas. Particularmente C. Y, por supuesto, una vez que se estableció la API, no pudieron cambiarla por razones de compatibilidad con versiones anteriores.


Debe devolver el número de años desde el año 1900.


Debería, como se señaló, nunca usar getYear() , sino usar getFullYear() .

La historia, sin embargo, no es tan simple como "IE implementa GetYear() como getFullYear() . Opera e IE actualmente tratan getYear() como getYear() originalmente se especificó para fechas anteriores al 2000, pero lo tratarán como getFullYear() para fechas después de 2000, mientras que webkit y Firefox se quedan con el viejo comportamiento

Esto produce 99 en todos los navegadores:

javascript:alert(new Date(917823600000).getYear());

Esto produce 108 en FF / WebKit, y 2008 en Opera / IE:

javascript:alert(new Date().getYear());


El número que obtienes es el número de años desde 1900. No me preguntes por qué ...


Es algo del año Y2K , solo se cuentan los años desde 1900.

Hay posibles problemas de compatibilidad ahora que getYear() ha quedado en desuso en favor de getFullYear() - de quirksmode :

Para hacer el asunto aún más complejo, date.getYear () está en desuso hoy en día y debe usar date.getFullYear (), que, a su vez, no es compatible con los navegadores más antiguos. Si funciona, sin embargo, siempre debe dar el año completo, es decir. 2000 en lugar de 100.

Su navegador da los siguientes años con estos dos métodos:

* The year according to getYear(): 108 * The year according to getFullYear(): 2008

También hay diferencias de implementación entre Internet Explorer y Firefox, ya que la implementación de getYear() de getYear() se modificó para comportarse como getFullYear() - de IBM :

Según la especificación ECMAScript, getYear devuelve el año menos 1900, originalmente destinado a devolver "98" para 1998. getYear quedó en desuso en ECMAScript Versión 3 y reemplazado por getFullYear ().

Internet Explorer cambió getYear () para que funcione como getFullYear () y lo haga compatible con Y2k, mientras que Mozilla mantuvo el comportamiento estándar.



Estoy usando date.getUTCFullYear() ; trabajando sin problemas


Por cierto, diferentes navegadores pueden arrojar resultados diferentes, por lo que es mejor omitir esta función por completo y usar getFullYear () siempre.


Verifica los documentos. No es un problema de Y2K, ¡es la falta de un problema de Y2K! Esta decisión se tomó originalmente en C y se copió en Perl, aparentemente JavaScript, y probablemente varios otros idiomas. Hace mucho tiempo, al parecer, todavía se sentía deseable usar años de dos dígitos, pero notablemente quien diseñó esa interfaz tuvo suficiente previsión para darse cuenta de que necesitaban pensar en lo que sucedería en el año 2000 y más allá, así que en lugar de solo proporcionar los dos últimos dígitos, indicaron el número de años desde 1900. Puede usar los dos dígitos, si tiene prisa o quiere arriesgarse. O si desea que su programa continúe funcionando, puede agregar 100 al resultado y usar años completos de cuatro dígitos.

Recuerdo la primera vez que salí con la manipulación en Perl. Curiosamente, leí los documentos . Aparentemente esto no es algo común. Un año o dos después me llamaron a la oficina el 31 de diciembre de 1999 para arreglar un error que se había descubierto en el último minuto posible en algún código de contrato de Perl, cosas con las que nunca había tenido nada que ver. Fue este el problema exacto: la llamada de fecha estándar regresó años desde 1900, y los programadores lo trataron como un año de dos dígitos. (Supusieron que obtendrían "00" en 2000). Como joven programador inexperto, me hizo pensar que habíamos pagado mucho más por un trabajo "profesional", y esas personas ni siquiera se habían molestado en leer el documentación. Fue el comienzo de muchos años de desilusión; ahora soy viejo y cínico. :)

En el año 2000, la conferencia anual de YAPC Perl fue referida como "YAPC 19100" en honor a este no-error reportado a menudo.

Hoy en día, al menos en el mundo de Perl, tiene más sentido usar un módulo estándar para el manejo de fechas, uno que usa años reales de cuatro dígitos. No estoy seguro de qué podría estar disponible para JavaScript.


está devolviendo un año de 4 dígitos - 1900, que pudo haber sido genial hace más de 9 años, pero ahora está muy retrasado. Java''s java.util.Date también hace esto.


use date.getFullYear() .

Esto es (como correctamente se señaló en otro lugar) es una cosa de Y2K. Netscape (escrito antes de 2000) originalmente devuelto, por ejemplo 98 de getYear() . En lugar de volver a 00 , en su lugar devolvió 100 para el año 2000. Luego aparecieron otros navegadores y lo hicieron de manera diferente, y todos estaban descontentos ya que reinaba la incompatibilidad.

Los navegadores posteriores getFullYear como método estándar para devolver el año completo.


var date_object = new Date (); var year = date_object.getYear (); if (año <2000) {año = año + 1900; } // obtendrás el año completo ...