Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

212
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda