Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

728
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!