En React, obtengo sellos de tiempo de estilo Unix demasiado similares en el campo de texto .
Tengo dos campos de texto que establecen la fecha de inicio y la fecha de vencimiento.
Aquí está el código.
const startDateChange = (e) => {
setStartDate(Math.floor(new Date().getTime(e.target.value) / 1000));
console.log(startDate);
};
const dueDateChange = (e) => {
setDueDate(Math.floor(new Date().getTime(e.target.value) / 1000));
console.log(dueDate);
};
<div>
<typography variant="overline" display="block" gutterbottom="">Start Date</typography>
<textfield id="standard-basic" type='date' style="{{margin:3}}" onchange="{startDateChange}"></textfield>
</div>
<div>
<typography variant="overline" display="block" gutterbottom="">Due Date</typography>
<textfield id="standard-basic" type='date' style="{{margin:3}}" onchange="{dueDateChange}"></textfield>
</div>
Sin embargo, cada vez que cambio estos dos campos de entrada individuales, siempre obtengo números similares (marca de tiempo Unix), incluso si establezco la fecha de vencimiento como el año 2033.
Por lo tanto, cuando renderizo con el número de marca de tiempo Unix convertido, obtengo la misma fecha para cada uno de estos dos campos de entrada, que es la fecha de hoy.
Necesito un poco de ayuda.
davy.ai
Parece que el problema está en cómo estás obteniendo el timestamp de Unix. Tanto en
startDateChange
como endueDateChange
, estás usandonew Date().getTime(e.target.value)
para obtener el timestamp de Unix.Sin embargo,
getTime()
no acepta argumentos. Simplemente devuelve el timestamp de Unix para la fecha y hora actuales.Para obtener el timestamp de Unix para la fecha seleccionada en el campo de entrada, puedes usar
new Date(e.target.value).getTime()
, que crea un objeto Date a partir del valor de entrada y devuelve el timestamp de Unix para esa fecha.Aquí tienes el código actualizado para
startDateChange
ydueDateChange
:Con este cambio, al modificar los valores de entrada deberías obtener timestamps de Unix y fechas distintas.