Logo

dev-resources.site

for different kinds of informations.

Como converter segundos para minutos e horas em vanila JS

Published at
12/1/2023
Categories
javascript
programming
portugues
Author
dougsource
Categories
3 categories in total
javascript
open
programming
open
portugues
open
Author
10 person written this
dougsource
open
Como converter segundos para minutos e horas em vanila JS

Nota: apenas traduzi o texto abaixo e postei aqui.

Trabalhar com o tempo em JavaScript pode ser complicado. Hoje vou mostrar como converter segundos em minutos e horas com vanilla JS.

Aviso: precisaremos fazer algumas contas de matemática.

Convertendo horas

Digamos que você tenha um timestamp em segundos que deseja exibir no formato HH:MM:SS.

var timestamp = 9462;
Enter fullscreen mode Exit fullscreen mode

Primeiro, vamos às horas.

Há 60 segundos em um minuto e 60 minutos em uma hora. Dividiremos nosso timestamp por 60 e depois por 60 novamente. Isso nos deixa com o resultado de 2.6283.

var timestamp = 9462;

// 2.628333333
var hours = timestamp / 60 / 60;
Enter fullscreen mode Exit fullscreen mode

Queremos apenas algumas horas, no entanto. Podemos usar Math.floor() para arredondar para o integer mais próximo.

var timestamp = 9462;

// 2
var hours = Math.floor(timestamp / 60 / 60);
Enter fullscreen mode Exit fullscreen mode

Convertendo minutos

A seguir, vamos aos minutos.

Existem 60 segundos em um minuto. Vamos dividir nosso timestamp por 60 e usar Math.floor() para arredondar para o integer mais próximo. Isso nos deixa com 157, porque também inclui todos os minutos que estão em nossas horas.

var timestamp = 9462;

// 2
var hours = Math.floor(timestamp / 60 / 60);

// 157
var minutes = Math.floor(timestamp / 60);
Enter fullscreen mode Exit fullscreen mode

Multiplicaremos as nossas horas por 60 para obter o seu valor em minutos e, em seguida, subtrairemos dos nossos minutos para obter o valor correto.

var timestamp = 9462;

// 2
var hours = Math.floor(timestamp / 60 / 60);

// 37
var minutes = Math.floor(timestamp / 60) - (hours * 60);
Enter fullscreen mode Exit fullscreen mode

Calculando os segundos

Finalmente, vamos calcular os segundos.

Para este, podemos usar o remainder operator. Ele retorna o valor que sobrou após a divisão por um número.

Usaremos isso para dividir nosso timestamp por 60 (o número de segundos em um minuto). O número que retornamos são os segundos depois de removermos todos os minutos.

var timestamp = 9462;

// 2
var hours = Math.floor(timestamp / 60 / 60);

// 37
var minutes = Math.floor(timestamp / 60) - (hours * 60);

// 42
var seconds = timestamp % 60;
Enter fullscreen mode Exit fullscreen mode

Formatando o time

Agora que temos horas, minutos e segundos, estamos prontos para formatá-los em nosso formato HH:MM:SS.

Podemos usar concatenação simples de strings para isso. JavaScript irá aplicar coerção em nossos integers para obter as strings.

// 2:37:42
var formatted = hours + ':' + minutes + ':' + seconds;
Enter fullscreen mode Exit fullscreen mode

Isso pode ser bom o suficiente, mas e se você quisesse um 0 à esquerda nas horas? E se nossos minutos ou segundos fossem números de um único dígito?

Podemos converter nossos números em strings e usar o método padStart() para impor um número mínimo de dígitos.

// 02:37:42
var formatted = hours.toString().padStart(2, '0') + ':' +
  minutes.toString().padStart(2, '0') + ':' +
  seconds.toString().padStart(2, '0');
Enter fullscreen mode Exit fullscreen mode

Atualização (14/07/2024)

Outra forma de executar a lógica:

function formatSeconds(sec) {
    if(typeof sec !== 'number' || Number.isNaN(sec)) {
        return '';
    }
    return ([
        Math.trunc(sec / 60 / 60), // horas
        Math.trunc(sec / 60 % 60), // minutos
        sec % 60 // ----------------- segundos
    ]).map(val => val.toString().padStart(2, '0')).join(':');
}
Enter fullscreen mode Exit fullscreen mode

E com isso, terminamos.

Fonte

Newsletter de Go Make Things

portugues Article's
30 articles in total
Favicon
Validação e Sanitização em Aplicações Web
Favicon
Golang básico - Comparação de Igualdade
Favicon
Guia de React re-render: tudo, tudo de uma vez
Favicon
Go + hot reload
Favicon
Como animar o scrolling para anchor links com CSS
Favicon
Como criar uma sticky navigation apenas com CSS
Favicon
Como usar requestAnimationFrame() com vanilla JS
Favicon
Como atualizar a URL do navegador sem refresh a página usando a vanilla JS History API
Favicon
Por que utilizar um elemento form quando submit campos com JavaScript?
Favicon
Quando um framework é melhor que a manipulação nativa do DOM
Favicon
Recursão com vanilla JavaScript
Favicon
Como usar async e await com vanilla JavaScript
Favicon
Construindo um show/hide disclosure component acessível com vanilla JS
Favicon
Eu <3 cascade!
Favicon
Você provavelmente não precisa de um DOMContentLoaded event em seu Javacript
Favicon
Formas de escrever Immediately Invoked Function Expression (IIFE) no JavaScript
Favicon
Event delegation e múltiplos seletores com vanilla JS
Favicon
Usando a propriedade CSS currentColor para contruir componentes extensíveis
Favicon
CurrentColor e SVGs
Favicon
WTF é gzipping (e como é diferente da minificação)?
Favicon
Como eu estruturo meus projetos vanilla JS
Favicon
Uma alternativa vanilla JS para o método moment.js timeFromNow()
Favicon
Recriando o método lodash partition() em vanilla JS
Favicon
Recriando o método lodash inRange() em vanilla JS
Favicon
Recriando o método lodash pull() em vanilla JS
Favicon
Como converter segundos para minutos e horas em vanila JS
Favicon
Gerando números randômicos com vanila JS
Favicon
Obtendo os meses formatados com vanila JS
Favicon
Como ser um desenvolvedor mais produtivo
Favicon
Como construir um site que carregue em menos de um segundo

Featured ones: