obtener hora fechas fecha año actual javascript getdate

hora - El getDate de JavaScript devuelve una fecha incorrecta



fechas en javascript (12)

La siguiente secuencia de comandos devuelve 20 en lugar de 21.

var d = new Date("2010/03/21"); document.write(d.getDate());

¿Qué estoy haciendo mal? ¿Es esto un error de JavaScript?


¿Hay alguna posibilidad de que trate el argumento de cadena como UTC y el objeto Date resultante como hora local, o viceversa? Eso podría tirarlo. Compare d.getDate() con d.getUTCDate() .


Al dar una nueva fecha a una fecha de cadena, la cadena debe incluir la zona horaria, de lo contrario se interpretará de manera diferente de navegador a otro (debido a diferentes implementaciones de javascript) y de máquina a otra (debido a la diferencia de la zona horaria local)

new Date(''2017-07-31T10:00:00-0500'');

en lugar de

new Date(''2017-07-31T10:00:00'');


Asegúrese de que el número de mes que está usando es -1, si está mirando a junio, debe hacer (6-1) para el mes, cuando cree

var date_obj = new Date(y,(m-1),d);


El método Date.parse depende de la implementación ( new Date(string) es equivalente a Date.parse ).

Si bien este formato estará disponible en los navegadores modernos, no puede estar 100% seguro de que el navegador interpretará exactamente su formato deseado.

Te recomendaría manipular tu cadena y usar el constructor Fecha con los argumentos de año, mes y día:

// parse a date in yyyy-mm-dd format function parseDate(input) { var parts = input.match(/(/d+)/g); // new Date(year, month [, date [, hours[, minutes[, seconds[, ms]]]]]) return new Date(parts[0], parts[1]-1, parts[2]); // months are 0-based }


Es el huso horario el que juega un papel importante aquí. La función de Date() agregará su zona horaria a la fecha que está dando como entrada.

Por ejemplo:

Di la entrada de esta manera:

alert(new Date("2018-09-15"));

El resultado para mí es

Sat Sep 15 2018 05:30:00 GMT+0530 (India Standard Time)

La zona horaria +0530 se agrega a mi entrada.

, obtuviste el resultado 20 porque estás en la zona horaria inferior a 0 ( -1è : 00`, etc ...)

La solución es restablecer tu zona horaria a 0 . Me gusta esto:

Date("2010-03-21T00:00:00").


Es un problema de horario de verano, porque Date () usa la hora local.

Vivo en Brasil y el 21 de octubre de 2012 es el comienzo del horario de verano en la mayor parte de mi país, por lo que las fechas locales en Oct-21-2012 entre 0: 0 y 1: 0 no existen en Brasil.

Algunas personas comentan aquí que funciona. Sucede porque el retorno de la hora correcta o incorrecta depende del país del usuario local.

Ver: http://www.timeanddate.com/news/time/brazil-dst-2012.html

En Brasil, en 2012, Java cree que el horario de verano comienza el 14 de octubre (en realidad comienza a partir de 1 semana).

var dt = new Date(2012,9,14); alert(dt.getHours());

produce 1 y

Ver: http://www.timeanddate.com/time/dst/2013.html

La solución es usar el horario UTC (tiempo universal coordinado), porque no hay cambios en el horario de verano y se usa una especie de tiempo abstracto. En la mayoría de las aplicaciones prácticas no hay problema.

var dt = new Date( Date.UTC(2012, 9, 21, 8, 5, 12)); alert( (dt.getUTCMonth()+1) + ''/'' + dt.getUTCDate() + ''/'' + dt.getUTCFullYear() + " " + dt.getUTCHours()+ '':'' + dt.getUTCMinutes() + '':'' + dt.getUTCSeconds() );

es más fácil si alguien no usa horas, minutos y segundos, simplemente coloca un valor de hora ficticia mayor o igual a 1, como he mostrado arriba.


Escribí el siguiente código en la barra de direcciones de mi navegador y el resultado fue 21

javascript:alert(new Date("2010/03/21").getDate())

No existe un error de Javascript, ya que hay muchas implementaciones de Javascript, por lo que querrá consultar una implementación específica.

La implementación que probé fue Chrome 4.1.249. ¿Lo que es tuyo?


No puede crear el objeto Fecha al pasar el argumento de cadena muestra como fecha.

Crear como esta manera.

var str_date = "2010/03/21"; var date = new Date(); var date_elements = str_date.split("/"); date.setYear(date_elements[0]); date.setMonth(date_elements[1]); date.setDay(date_elements[2]); alert(date.toString);

presta atención al método date.toString . devuelve cadena de fecha completa. date.getDate solo te dará el día de ese día.

para obtener más información sobre el objeto Date, consulte www.w3school.com


Obtengo la misma fecha (21) en firfox, safari, cromo, opera e IE, ya sea que use la cadena "2010/03/21" o los argumentos de fecha entera (2010,2,21).

Estoy usando una máquina de Windows y nuevas versiones de los navegadores-

puede probar para ver si su cliente analiza una fecha diferente de la cadena, que es el único lugar donde veo un problema.

if(new Date("2010/03/21")- new Date(2010,2,21)){ alert(new Date("2010/03/21")); }



También obtengo una desviación de un día a través de getDate() , pero observo que getUTCDate() devuelve el valor esperado. El problema se veía en FF 3.6.12, pero el mismo código que se ejecutaba en Chrome estaba bien.

Mi código de depuración:

var date="2010-11-04"; alert(date); var d = new Date(date) alert(d.toDateString()+": "+ d.getDate()+" UTC "+d.getUTCDate());

Esto dio una salida (FireFox):

Miércoles, 03 de noviembre de 2010: 3 UTC 4

Chrome está bien. Así que algo está pasando en alguna parte, quizás un error, pero más probablemente sea un problema de zona horaria / UTC. Me recuerda dónde PHP date() devolverá 23 horas en un día si la zona horaria cambió ese día, etc. Sin embargo, me equivoqué si sé lo que es.