Por que me muestra menos dias y mes input date javascript

Iniciado por SrTrp, 4 Noviembre 2020, 18:35 PM

0 Miembros y 1 Visitante están viendo este tema.

SrTrp

Bueno hola que tal lo que estoy haciendo es un input date con la fecha diaria y como maximo hasta un mes, el problema que cuando extraego el valor del dia me resta 2 dias y 1 mes es decir si yo escojo 4 de noviembre me muestra 2 de octubre en lugar de 4 de noviembre y en mi input si aparece 04/11/2020, pero me muestra lo dicho
Este es mi input que me da los resultados que quiero con php.
Código (html4strict) [Seleccionar]

<input type="date" id="fecha_1" min="<?php echo $fecha_hoy;  ?>" max="<?php echo $fecha_fin;  ?>" style="padding: 7px;background: #91ffa4;border: 2px solid #509a5d;"/>

Código (php) [Seleccionar]

date_default_timezone_set('America/Mexico_City');
$fecha_hoy = date("Y-m-d");
$fecha_fin = date("Y-m-d",strtotime($fecha_hoy."+ 1 month"));

y acá mi javascript que me muestra lo que les menciono
Código (javascript) [Seleccionar]

var dia = new Date($("#fecha_1").val()).getDay();
var mes = new Date($("#fecha_1").val()).getMonth();
var año = new Date($("#fecha_1").val()).getFullYear();
document.getElementById("txt_cita").innerText = "Has selecionado el dia: " +dias[dia]+" "+dia+" de "+meses[mes]+" del "+año+" Hora por confirmar..(Selecione una horario disponible)";

EdePC

Saludos,

Hay que seguir cierto estándar para construir una fecha con new Date("texto"), tienes que seguir el formato de EEUU: mes-día-año, Ej.: Para el 04 de noviembre del 2020:

Código (javascript) [Seleccionar]
new Date("11-04-2020")
// Wed Nov 04 2020 00:00:00 GMT-0500 (hora estándar de Colombia)

new Date("2020-04-11")
// Fri Apr 10 2020 19:00:00 GMT-0500 (hora estándar de Colombia)

SrTrp

Cita de: EdePC en  4 Noviembre 2020, 19:47 PM
Saludos,

Hay que seguir cierto estándar para construir una fecha con new Date("texto"), tienes que seguir el formato de EEUU: mes-día-año, Ej.: Para el 04 de noviembre del 2020:

Código (javascript) [Seleccionar]
new Date("11-04-2020")
// Wed Nov 04 2020 00:00:00 GMT-0500 (hora estándar de Colombia)

new Date("2020-04-11")
// Fri Apr 10 2020 19:00:00 GMT-0500 (hora estándar de Colombia)

Ya lo hice con el formato que me pasaste lo hice manualmente y sigue igual si escojo 4 de noviembre me muestra, 3 de noviembre.
Código (javascript) [Seleccionar]

var string_fecha = $("#fecha_1").val().substring(5,7)+"-"+$("#fecha_1").val().substring(8,10)+"-"+$("#fecha_1").val().substring(0,4);
var dia = new Date(string_fecha).getDay();

console.log('Dia: '+dia + " - Fecha:"+string_fecha);
//Imprime Dia: 3 - Fecha:11-04-2020
console.log("Valor:"+$("#fecha_1").val());
//Imprime Valor:2020-11-04

EdePC

Nop, getDay() devuelve el día de la semana, desde 0 para domingo a 6 para sábado, como vi que estabas utilizando un array dias[dia] supongo que estás usando uno del tipo:

Código (javascript) [Seleccionar]
var dias = [ "domingo", "lunes", "martes", "miercoles", "jueves", "viernes", "sabado" ]

Para obtener el día del mes tienes que usar getDate(), el cual devuelve un número desde 1 a 30 o 31 dependiendo del mes, es decir, para tu último ejemplo necesitas:

Código (javascript) [Seleccionar]

// Ej. para la fecha 05 de noviembre del 2020
new Date("11-05-2020").getDate()
// 5