Como posso converter segundos em HH:mm:ss
?
No momento estou usando a função abaixo
render: function (data){
return new Date(data*1000).toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1");;
}
Isso funciona no Chrome, mas no firefox por 12 segundos, eu entendi 01:00:12
que gostaria de usar o moment.js para compatibilidade entre navegadores
Eu tentei isso mas não funciona
render: function (data){
return moment(data).format('HH:mm:ss');
}
O que estou fazendo de errado?
EDITAR
Consegui encontrar uma solução sem moment.js que é a seguinte
return (new Date(data * 1000)).toUTCString().match(/(\d\d:\d\d:\d\d)/)[0];
Ainda curioso para saber como posso fazer isso no moment.js
javascript
momentjs
QGA
fonte
fonte
Respostas:
A partir desta postagem, eu tentaria isso para evitar problemas de salto
Eu não executei jsPerf, mas acho que isso é mais rápido do que criar novos objetos de data um milhão de vezes
Exibir trecho de código
fonte
`${pad(hours)}:${pad(minutes)}:${pad(secs)}`
Isso é semelhante à resposta mplungjan referenciada em outra postagem, mas mais concisa:
Ele sofre das mesmas ressalvas, por exemplo, se os segundos excederem um dia (86400), você não obterá o que espera.
fonte
Você pode usar o plugin de formato de duração de momento :
Veja também este Fiddle
Upd: Para evitar o corte de valores menores que 60 segundos, use
{ trim: false }
:fonte
fonte
Como usar corretamente as durações de moment.js? | Use moment.duration () em códigos
Primeiro, você precisa importar
moment
emoment-duration-format
.Então, use a função de duração. Vamos aplicar o exemplo acima: 28800 = 8h.
🎉Bem, você não tem erro de tipo acima. 🤔Você obteve um valor correto às 8h? Não…, o valor que você obtém é 8:00 a. O formato Moment.js não está funcionando como deveria.
💡A solução é transformar segundos em milissegundos e usar o horário UTC.
Tudo bem, agora temos 8h. Se você quiser 8h em vez de 8h para horário integral, precisamos fazer RegExp
fonte
Até 24 horas. Como
Duration.format
está obsoleto, com [email protected]fonte