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

847
Vistas
Cómo convertir segundos a HH:mm:ss en moment.js

¿Cómo puedo convertir segundos a HH:mm:ss ?

En este momento estoy usando la siguiente función

 render: function (data){ return new Date(data*1000).toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1");; }

Esto funciona en Chrome pero en Firefox durante 12 segundos obtengo 01:00:12 Me gustaría usar moment.js para la compatibilidad entre navegadores

Intenté esto pero no funciona

 render: function (data){ return moment(data).format('HH:mm:ss'); }

¿Qué estoy haciendo mal?

EDITAR

Logré encontrar una solución sin moment.js, que es la siguiente

 return (new Date(data * 1000)).toUTCString().match(/(\d\d:\d\d:\d\d)/)[0];

Todavía tengo curiosidad sobre cómo puedo hacerlo en moment.js

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Esto es similar a la respuesta mplungjan a la que se hace referencia en otra publicación, pero más concisa:

 const secs = 456; const formatted = moment.utc(secs*1000).format('HH:mm:ss'); document.write(formatted);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

Adolece de las mismas advertencias, por ejemplo, si los segundos superan un día (86400), no obtendrá lo que espera.

over 4 years ago · Santiago Trujillo Denunciar

0

De esta publicación intentaría esto para evitar problemas de salto

 moment("2015-01-01").startOf('day') .seconds(s) .format('H:mm:ss');

No ejecuté jsPerf, pero creo que esto es más rápido que crear nuevos objetos de fecha un millón de veces.

 function pad(num) { return ("0"+num).slice(-2); } function hhmmss(secs) { var minutes = Math.floor(secs / 60); secs = secs%60; var hours = Math.floor(minutes/60) minutes = minutes%60; return `${pad(hours)}:${pad(minutes)}:${pad(secs)}`; // return pad(hours)+":"+pad(minutes)+":"+pad(secs); for old browsers } 

 function pad(num) { return ("0"+num).slice(-2); } function hhmmss(secs) { var minutes = Math.floor(secs / 60); secs = secs%60; var hours = Math.floor(minutes/60) minutes = minutes%60; return `${pad(hours)}:${pad(minutes)}:${pad(secs)}`; // return pad(hours)+":"+pad(minutes)+":"+pad(secs); for old browsers } for (var i=60;i<=60*60*5;i++) { document.write(hhmmss(i)+'<br/>'); } /* function show(s) { var d = new Date(); var d1 = new Date(d.getTime()+s*1000); var hms = hhmmss(s); return (s+"s = "+ hms + " - "+ Math.floor((d1-d)/1000)+"\n"+d.toString().split("GMT")[0]+"\n"+d1.toString().split("GMT")[0]); } */

over 4 years ago · Santiago Trujillo Denunciar

0

Puede usar el complemento de formato de duración de momento :

 var seconds = 3820; var duration = moment.duration(seconds, 'seconds'); var formatted = duration.format("hh:mm:ss"); console.log(formatted); // 01:03:40
 <!-- Moment.js library --> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script> <!-- moment-duration-format plugin --> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment-duration-format/1.3.0/moment-duration-format.min.js"></script>

Véase también este violín

Upd: para evitar el recorte de valores de menos de 60 segundos, use { trim: false } :

 var formatted = duration.format("hh:mm:ss", { trim: false }); // "00:00:05"
over 4 years ago · Santiago Trujillo 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