Pergunta

Alguém faz 20 horas 42 minutos e 16 segundos em um turno, totalizando 74536 segundos. Como faço para obter as horas do número de segundos que a pessoa fez para essa mudança?

20 * 60 * 60      =    72000
     42 * 60      =     2520
          16      =       16
                  +    -----
Total             =    74536
____________________________
Total % 60        =  Seconds (16)
Total % ?         =  Minutes (42)
Total % ?         =    Hours (20)

Já tentei 84600; Acontece que quando um número é menor do módulo, ele realmente não é muito útil, e algo que eu vou ter que pegar se alguém só assine por alguns segundos ...

Foi útil?

Solução

Você precisa usar o módulo e a divisão:

t = seconds_in_shift;
secs = t % 60;
t /= 60;
mins = t % 60;
t /= 60;
hour = t;

Ou:

secs =  ttime % 60;
mins = (ttime / 60) % 60;
hour =  ttime / 3600;

Uma outra opção usa o div() função do padrão c (<stdlib.h>):

div_t v1 = div(ttime, 60);
div_t v2 = div(v1.quot, 60);

Depois disso, v1.rem contém os segundos; v2.rem contém os minutos e v2.quot contém as horas com base no número de segundos originalmente em ttime.

Outras dicas

Com base na resposta de Jonathan, acredito que a resposta precisa deve ser essa ...

$total_time = 61000;
$sec = $total_time % 60;
$total_time = ($total_time - $sec) / 60;
$min = $total_time % 60;
$hour = ($total_time - $min) / 60;
echo "$hour hours, $min minutes and $sec seconds";

Mas se o seu servidor tiver o PHP7 instalado, você pode usar o intdiv () função. Uma divisão inteira na qual o restante é descartado.

// $hour = ($total_time - $min) / 60; old code but still works
$hour = intdiv($total_time, 60); // PHP7 and above code
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top