Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

211
Vistas
Formato de tiempo de resta de momento de reacción

Tengo la siguiente función para calcular el tiempo entre el inicio y el final (que son solo campos de entrada).

 calculateTime() { if(this.state.start !== '' && this.state.end !== ''){ let time1 = moment(this.state.end, "hh:mm"); let subtract = time1.subtract(this.state.start); let format = moment(subtract).format("hh:mm"); console.log(format); return format; } return 0; }

En general, el cálculo funciona. El valor se establece a través de un campo de entrada y el estado se actualiza al valor ingresado. Como se ve aquí:

 <table> <thead> <tr> <th>Date</th> <th>Start</th> <th>End</th> <th>Time</th> </tr> </thead> <tbody> <tr> <td> <input type="date" id="start" name="trip-start" min="2022-01-01" max="2023-12-31" onChange={this.handleDate} value={this.state.date} /> </td> <td> <input type="text" onChange={this.handleStart} placeholder="hh:mm" maxLength={5} /> </td> <td> <input type="text" onChange={this.handleEnd} placeholder="hh:mm" maxLength={5} /> </td> <td> <p>{this.calculateTime()}</p> </td> </tr> </tbody> </table>

La función para establecer el estado inicial (establecer el valor final es similar excepto que se llama a otra función para actualizar el estado)

 handleStart(event:any) { this.setState({ start: event.target.value }); }

Como puede ver en las imágenes, los valores están apagados a las 12 h. Ejemplo

Aquí debería ser 13:01 en lugar de 01:01

ingrese la descripción de la imagen aquí

Aquí debería ser 00:01 en lugar de 12:01

¿Alguien tiene alguna idea de cómo solucionarlo además de agregar o eliminar manualmente las 12 h?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Aquí está el código de trabajo:

 const calculateTime = () => { if (this.state.start !== "" && this.state.end !== "") { let time1 = moment(this.state.end, "hh:mm"); let time2 = moment(this.state.start, "hh:mm"); let hoursDiff = time1.diff(time2, "hours"); console.log("Hours:" + hoursDiff); let minutesDiff = time1.diff(time2, "minutes"); console.log("Minutes:" + minutesDiff); // let subtract = time1.subtract(time2); // let format = subtract.format("hh:mm"); // console.log(format); return `${hoursDiff} : ${minutesDiff}`; } return 0;

};

Ahora, la razón por la que su código no funcionó es porque necesita envolver su fecha de startDate con el momento,

 let time2 = moment(this.state.start, "hh:mm"); let subtract = time1.subtract(time2);

al intentar hacer tanto la hora como los minutos. la operación en una sola función también está agregando el tiempo local, no veo ninguna opción para deshabilitar eso. si encuentra algo así, también puede usar su código. Espero que esto ayude, después de pedirle que edite su pregunta varias veces. :)

Además, al observar su caso de uso, debe considerar restar la fecha con la hora, no solo la hora https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/07-difference/

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda