Como converter segundos em uma HH-MM-SS
string usando JavaScript?
javascript
date
time
date-format
time-format
Hannoun Yassir
fonte
fonte
Respostas:
Você não conhece datejs ? é um deve saber.
Usando datejs, basta escrever algo como:
--atualizar
Atualmente, date.js está desatualizado e não é mantido, portanto, use " Moment.js ", que é muito melhor como indicado por TJ Crowder.
- atualização 2
Por favor, use @ Frank é uma solução de uma linha:
É de longe a melhor solução.
fonte
TypeError: Object [object Date] has no method 'clearTime'
.Você pode fazer isso sem nenhuma biblioteca JavaScript externa com a ajuda do método JavaScript Date, como a seguir:
Ou, como no comentário de @Frank ; um forro:
fonte
new Date(SECONDS * 1000).toISOString().substr(11, 8);
Object doesn't support property or method 'toISOString'
Eu não acho que nenhum recurso interno do objeto Date padrão faça isso por você de uma maneira mais conveniente do que apenas fazer as contas sozinho.
Exemplo:
Mostrar snippet de código
fonte
0.05
nahours
variável. Coloquei dentro de umparseInt
que o corrigia para o meu caso, mas acho que não seria preciso para tudo. Ainda assim, isso me ajudou, então obrigado!parseInt
-lo, isso é para analisar seqüências de caracteres , não manipular números.Math.floor
seria a operação relevante aqui.seconds = Math.floor(totalSeconds % 60);
. Também obtive um resultado decimal lá também.totalSeconds % 60
só pode ter uma parte fracionária setotalSeconds
tiver uma parte fracionária. Se você deseja usar o chão, isso dependerá da perda ou retenção dessas informações. (As outras operações de chão que estamos fazendo não perca nenhuma informação, porque eles estão apenas limpando os dados que acabam emminutes
eseconds
.)console.log( hours +':'+ ('0'+minutes).slice(-2) +':'+ ('0'+seconds).slice(-2) );
Eu sei que isso é meio velho, mas ...
ES2015:
Ele produzirá:
fonte
Como Cleiton apontou em sua resposta , o moment.js pode ser usado para isso:
fonte
moment().startOf('year').seconds(30000000).format('DDD HH:mm:ss')
..format('YYYY DDD HH:mm:ss')
fonte
Isso faz o truque:
(Originado daqui )
fonte
podemos tornar essa função muito mais curta e nítida, mas isso diminui a legibilidade; portanto, a escreveremos da maneira mais simples e estável possível.
ou você pode verificar isso trabalhando aqui :
fonte
Tente o seguinte:
fonte
Aqui está uma extensão para a classe Number. toHHMMSS () converte segundos em uma sequência hh: mm: ss.
fonte
Fácil de seguir versão para noobies:
fonte
Esta função deve fazer isso:
Sem passar um separador, ele usa
:
como separador (padrão):Se você deseja usar
-
como separador, apenas passe-o como o segundo parâmetro:Veja também este violino .
fonte
:
como padrão para oseparator
parâmetro, como já expliquei. Isso é feito pela declaraçãotypeof separator !== 'undefined' ? separator : ':'
. Além disso, sua função é praticamente idêntica à minha, exceto algumas alterações cosméticas e ambas devem produzir a mesma saída ... exceto que minha versão tem um suporte de navegador muito melhor. O seu não vai funcionar em qualquer versão do Internet Explorer ou MS Borda <14.abaixo está o código fornecido que converterá segundos no formato hh-mm-ss:
Obtenha método alternativo do Converter segundos para o formato HH-MM-SS em JavaScript
fonte
Para o caso especial de HH: MM: SS.MS (eq: "00: 04: 33.637") conforme usado pelo FFMPEG para especificar milissegundos .
Exemplo de uso, um cronômetro de transporte em milissegundos:
Exemplo de uso, vinculado a um elemento de mídia
Fora da questão, essas funções escritas em php:
fonte
+ "." + p.getMilliseconds()
usandonew Date(p.getTime()-o.getTime()).toISOString().split("T")[1].split("Z")[0]
fonte
Eu só queria dar uma pequena explicação para a boa resposta acima:
Na segunda linha, como há 3600 segundos em 1 hora, dividimos o número total de segundos por 3600 para obter o número total de horas. Usamos parseInt para remover qualquer decimal. Se totalSec fosse 12600 (3 horas e meia), então parseInt (totalSec / 3600) retornaria 3, pois teremos 3 horas completas. Por que precisamos do% 24 neste caso? Se excedermos 24 horas, digamos que temos 25 horas (90000 segundos), o módulo aqui nos levará de volta a 1 novamente, em vez de retornar 25. Está limitando o resultado dentro de um limite de 24 horas, pois existem 24 horas em um dia.
Quando você vê algo assim:
Pense assim:
fonte
Integrando esse segmento antigo - o OP declarou HH: MM: SS e muitas das soluções funcionam, até você perceber que precisa de mais de 24 horas listadas. E talvez você não queira mais do que uma única linha de código. Aqui está:
Retorna H +: MM: SS. Para usá-lo, basta usar:
... Tentei fazer com que ele usasse a menor quantidade de código possível, para uma boa abordagem de uma linha.
fonte
Você já tentou adicionar segundos a um objeto Date?
Uma amostra: https://jsfiddle.net/j5g2p0dc/5/
Atualizado: o link de amostra estava ausente, por isso criei um novo.
fonte
addSeconds
no objeto Date comoDate.prototype.addSeconds = function(seconds){...}
. Sim, funciona, obrigado pela atualização.Aqui está uma função para converter segundos para o formato hh-mm-ss com base na resposta de powtac aqui
jsfiddle
Exemplo de uso
fonte
Depois de analisar todas as respostas e não ficar feliz com a maioria delas, foi isso que eu vim. Eu sei que estou muito atrasado para a conversa, mas aqui está assim mesmo.
Crio um novo objeto Date, altero a hora para meus parâmetros, converto o objeto Date em uma string de tempo e removi os itens adicionais dividindo a string e retornando apenas a parte necessária.
Eu pensei em compartilhar essa abordagem, uma vez que elimina a necessidade de regex, lógica e acrobacias matemáticas para obter os resultados no formato "HH: mm: ss" e, em vez disso, conta com métodos internos.
Você pode dar uma olhada na documentação aqui: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
fonte
Existem muitas opções para resolver esse problema, e obviamente existem boas opções sugeridas, mas quero adicionar mais um código otimizado aqui
se você não quiser zero formatado com menos de 10 números, poderá usar
}
Código de amostra http://fiddly.org/1c476/1
fonte
Em uma linha, usando a solução de TJ Crowder:
Em uma linha, outra solução que também conta dias:
Fonte: https://gist.github.com/martinbean/2bf88c446be8048814cf02b2641ba276
fonte
fonte
Você também pode usar o código abaixo:
fonte
new Date().toString().split(" ")[4];
resultado
15:08:03
fonte
Para quem usa o AngularJS, uma solução simples é filtrar o valor com a API da data , que converte milissegundos em uma cadeia de caracteres com base no formato solicitado. Exemplo:
Observe que isso espera milissegundos, portanto, você pode multiplicar o timeRemaining por 1000 se estiver convertendo de segundos (conforme a pergunta original foi formulada).
fonte
Eu me deparei com o caso que alguns mencionaram em que o número de segundos é superior a um dia. Aqui está uma versão adaptada da resposta mais bem avaliada do @Harish Anchu que é responsável por períodos mais longos:
Exemplo:
fonte
Exemplo de uso
fonte
Nenhuma das respostas aqui atende aos meus requisitos, pois eu quero poder lidar com
Embora esses não sejam exigidos pelo OP, é uma boa prática cobrir casos extremos, especialmente quando é preciso pouco esforço.
É bastante óbvio é que o OP significa NÚMERO de segundos quando ele diz segundos . Por que atribuir sua função
String
?fonte
secondsToTimeSpan(8991)
retornos6.00:05:51
enquanto eu acho que ele deve retornar00:02:29:51
Eu usei esse código antes para criar um objeto de período de tempo simples:
fonte