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

223
Visualizações
Generación de duración a partir de valores de tiempo

Estoy tratando de encontrar una manera a través de moment.js para convertir dos valores de tiempo, que vienen como tiempos de inicio y finalización, expresados en horas y minutos como valores de cadena, así: inicio: 1:12 y parada: 2:10 , o por la tarde, start: 14:23 , y stop: 15:22 y genera una duración en milisegundos a partir de esto. He intentado lo siguiente, pero me da un resultado NaN :

Solo para aclarar, recibo los datos en formato de cadena. Vea a continuación cómo se ve:

 const startValue = "1:12"; const stopValue = "2:10"; // for a duration of 58 minutes const msDuration = moment(stopValue).format('HH:mm').valueOf() - moment(startValue).format('HH:mm').valueOf();

Supongo que el problema aquí es que mi startValue y stopValue deben convertirse primero a un formato diferente, ya que actualmente son valores de cadena. Entonces, ¿cómo puedo convertir un valor de cadena de "1:12" para que sea algo que pueda usar el moment ?

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Hay dos problemas con su código:

  1. Análisis no válido

    Sus entradas de tiempo no están en un formato estándar que Moment reconozca, por lo que tendrá que usar un análisis formateado para explicarle sus tiempos.

  2. format ting como una cadena antes de llamar a valueOf .

    .format() convierte su objeto Moment en una cadena, y las cadenas no se pueden restar. Para resolver esto, simplemente puede soltar la llamada .format() . En su lugar, también puede usar .diff() , que calculará la diferencia por usted.

Entonces, puedes usar cualquiera de estos:

 const msDuration = moment(stopValue, "H:mm").valueOf() - moment(startValue, "H:mm").valueOf()
 const msDuration = moment(stopValue, "H:mm") - moment(startValue, "H:mm") // Subtracting will implicitly call .valueOf()
 const msDuration = moment(stopValue, "H:mm").diff(moment(startValue, "H:mm"))
about 4 years ago · Juan Pablo Isaza Relatório

0

Según sus comentarios anteriores, reconozco que está recibiendo los tiempos como respuesta en el siguiente formato: "HH: mm".

Si la fecha real realmente no importa, puede convertirla así ( JsFiddle ):

 const startValue = "1:12"; const stopValue = "2:10"; // for a duration of 58 minutes const start = { hour: startValue.split(":")[0], minute: startValue.split(":")[0] } const stop = { hour: stopValue .split(":")[0], minute: stopValue .split(":")[0] } const msDuration = moment().hours(stop.hour).minutes(stop.minute).valueOf() - moment().hours(start.hour).minutes(start.minute).valueOf(); //you might get 1 ms less. so jest set also ms to 0 const msDurationA = moment().hours(stop.hour).minutes(stop.minute).milliseconds(0).valueOf() - moment().hours(start.hour).minutes(start.minute).milliseconds(0).valueOf();

Entonces, básicamente, está tomando la fecha actual y mutando las horas y los minutos, para que pueda trabajar con moment.Js.

Aunque mi pregunta es, ¿por qué necesitas un momento necesario? también puedes hacerlo en JS nativo:

 const startValue = "1:12"; const stopValue = "2:10"; // for a duration of 58 minutes const start = { hour: +startValue.split(":")[0], minute: +startValue.split(":")[1] }; const stop = { hour: +stopValue.split(":")[0], minute: +stopValue.split(":")[1] }; const msDuration = (stop.hour * 3600000 + stop.minute * 60000) - (start.hour * 3600000 + start.minute * 60000); console.log("msDuartion: ", msDuration);

about 4 years ago · Juan Pablo Isaza Relatório

0

Usando vainilla JS:

 function getMilliSecs(text) { const spl = text.split(":"); return parseInt(spl[0])*60*60*1000 + parseInt(spl[1])*60*1000; } function getMilliSecsDuration(start, stop) { return getMilliSecs(stop) - getMilliSecs(start); }
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