es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en cómo estás obteniendo el timestamp de Unix. Tanto en startDateChange como en dueDateChange, estás usando new 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 y dueDateChange:

    const startDateChange = (e) => {
      setStartDate(Math.floor(new Date(e.target.value).getTime() / 1000));
      console.log(startDate);
    };
    
    const dueDateChange = (e) => {
      setDueDate(Math.floor(new Date(e.target.value).getTime() / 1000));
      console.log(dueDate);
    };
    

    Con este cambio, al modificar los valores de entrada deberías obtener timestamps de Unix y fechas distintas.

Comments are closed.