[SP-pm] cálculo com tempos em 24:00
Wendel Scardua
wendelscardua em gmail.com
Quinta Novembro 16 15:15:29 PST 2006
Já vi alguns problemas... (problemas que eu acho que já tive quando fiz esse
tipo de conta, na época em que eu brincava com QBasic - ah, bons tempos
aqueles...)
On 11/16/06, André Garcia Carneiro <andre.garcia.carneir em terra.com.br>
wrote:
>
> #Calculando a hora:
> my $hora_calc = $otime[0] + (($time[0] % 24) ); #Descobri por
> acaso, por tentativa e erro....
>
> #Se o resultado der maior que 24, deve-se tirar 24. A diferença é
> exatamente a hora que eu estou calculando.
> $hora_calc -= 24 if($hora_calc > 24);
Sugiro isso aqui, que faz mais sentido:
my $hora_calc = ($otime[0] + $time[0]) % 24;
(afinal, você quer somar as horas, mas quer que "dê a volta" no 24. A
divisão inteira por 24 dá o número de dias,
o resto da divisão dá as horas que não completam um dia)
#Somando os minutos
>
> #Para somar os minutos, simplesmente some os minutos dados em
> $hora_inicial. Se for maior do que 59,
> #então deve-se somar a hora + 1, e se obter a diferenca dos minutos que
> passaram de 59.
>
> print $otime[1] + $time[1];
>
> $min_calc = $otime[1] + $time[1];
> if($min_calc > 59)
> {
> $min_calc -= 60;
> $min_calc = abs $min_calc;
> $hora_calc += 1;
> }
A mesma coisa eu aplicaria aqui:
my $min_calc = $otime[1] + $time[1];
$hora_calc += int ($min_calc / 60); # a divisão inteira por 60 dá a qtd de
horas inteiras
$min_calc = $min_calc % 60; # e o resto da divisão dá os minutos que não
completam 1 hora
print "\nProxima HORA = $hora_calc\:".$min_calc." \n";
E aqui eu ainda tascava um
printf "\nProxima HORA = %2d:%2d\n", $hora_calc, $min_calc;
pra não ficar com horas "7:0", "7:30", "8:0", etc... ;-)
##FIM DO SCRIPT
>
> Claro, esse foi o que eu usei para testar, mas a ideia foi usada para
> resolver isso via web.
>
>
>
> Cheers!
E sim, claro que TIMTOWTDI, principalmente do jeito "certo"...
Outra opção POG era converter tudo pra minutos, trabalhar com minutos, e
depois transformar em hh:mm ( h = int ( x / 60) % 24, m = x % 60 )
ps: agora que me dei conta, depois de
$hora_calc += int ($min_calc / 60); # a divisão inteira por 60 dá a qtd de
horas inteiras
a hora pode ter passado de 24... talvez fosse melhor deixar pro fim das
contas issaqui:
$hora_calc = $hora_calc % 24;
Em vez de calcular o % 24 lá no começo...
--
[]s
Wendel
"Não ajustar o auto-ajuste" - http://wendel.scardua.net/
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/saopaulo-pm/attachments/20061116/4852598d/attachment.html
Mais detalhes sobre a lista de discussão SaoPaulo-pm