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

733
Visualizações
Convertir milisegundos a horas o minutos u horas o días en javascript

Estoy tratando de convertir milisegundos a ...(seg/min/horas/día) hace, lo intenté como el siguiente código pero no obtengo el resultado esperado, el resultado muestra que 19143.4 Days . Deben ser 2 o 3 días.

 function msToTime(ms) { let seconds = (ms / 1000).toFixed(1); let minutes = (ms / (1000 * 60)).toFixed(1); let hours = (ms / (1000 * 60 * 60)).toFixed(1); let days = (ms / (1000 * 60 * 60 * 24)).toFixed(1); if (seconds < 60) return seconds + " Sec"; else if (minutes < 60) return minutes + " Min"; else if (hours < 24) return hours + " Hrs"; else return days + " Days" } console.log(msToTime(1653991056493))

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

0

De hecho, aquí su código parece funcionar bien.

Lectura de la documentación de la fecha :

Los objetos de fecha de JavaScript representan un momento único en el tiempo en un formato independiente de la plataforma. Los objetos de fecha contienen un número que representa milisegundos desde el 1 de enero de 1970 UTC.

Entonces, cuando está haciendo una new Date(1653991056493) , es 1653991056493ms después del 1 de enero de 1970, que es 19143.4 días .


Si desea el ms entre una fecha y la fecha actual, simplemente puede restar la fecha actual con la marca de tiempo

 new Date() - 1653991056493 

 function msToTime(ms) { let seconds = (ms / 1000).toFixed(1); let minutes = (ms / (1000 * 60)).toFixed(1); let hours = (ms / (1000 * 60 * 60)).toFixed(1); let days = (ms / (1000 * 60 * 60 * 24)).toFixed(1); if (seconds < 60) return seconds + " Sec"; else if (minutes < 60) return minutes + " Min"; else if (hours < 24) return hours + " Hrs"; else return days + " Days" } console.log(msToTime(new Date() - 1653991056493))

about 4 years ago · Juan Pablo Isaza Relatório

0

Interpreté la pregunta de manera ligeramente diferente a la respuesta aceptada y estoy publicando esto, ya que podría ayudar a las personas que buscan hacer lo que pensé que me pedían:

es decir, para reducir un período transcurrido de milisegundos a días (redondeados) O horas (redondeadas) O minutos (redondeados) O segundos (redondeados), dependiendo de cuál se ajuste a la escala de la duración transcurrida (como uno podría querer hacer dónde, por por ejemplo, una página debe informar "comentario realizado hace 2 días" o "comentario realizado hace 10 segundos", etc., tal como lo hace SO cuando informa cuándo se realizaron respuestas o comentarios.

Al igual que con la respuesta aceptada, el tiempo transcurrido primero debe calcularse restando el valor de ms pasado de un nuevo valor de fecha (y, dado que nunca se necesitarán unidades menores que segundos, el valor transcurrido se convierte en segundos dividiendo por 1000):

 const now = new Date(); const secondsPast = Math.round((now-pastMs)/1000);

Luego, este valor se filtra por una serie de comprobaciones if , cada una de las cuales contiene una declaración de return condicional si se ha alcanzado la unidad de tiempo relevante. Por lo tanto, si la 'escala' son segundos (es decir, la duración transcurrida es inferior a un minuto), la función devuelve el valor de segundos y sale inmediatamente:

 if (secondsPast<60) {return `${secondsPast} seconds`} // terminates here if true;

Si el valor de los segundos es superior a 60, se comprueban los minutos y se devuelve si son inferiores a sesenta. El proceso se repite hasta que finalmente se devuelven valores más grandes como días si ninguna otra unidad era apropiada. Tenga en cuenta el uso de Math.floor para devolver solo números enteros para la unidad relevante.

(esto es, creo, lo que la pregunta original estaba tratando de lograr).

 function elapsedTime(pastMs) { const now = new Date(); const secondsPast = Math.round((now-pastMs)/1000); if (secondsPast<60) {return `${secondsPast} seconds`} // terminates here if true; const minutesPast = Math.floor(secondsPast/60); if (minutesPast<60) {return `${minutesPast} minutes`} // terminates here if true; const hoursPast = Math.floor(minutesPast/60); if (hoursPast<24) {return `${hoursPast} hours`} // terminates here if true; return `${Math.floor(hoursPast/24)} days`; } // end function elapsedTime; console.log(elapsedTime(1653991056493))

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