SUBTRAINU HORAS...

USUARIO.EXCLUIDOS 08/08/2007 16:04:49
#230057
por exemplo, como subtraio 23:55 de 00:00, para me retornar o valor em minutos se eu faço a HoraFinal - HoraIncial *24*60, mas em caso de ser 23:55 tirando de 00:00 jah da problema, alguem saberia me passar como posso chegar no resultado? 5 por exemplo neste caso....
USUARIO.EXCLUIDOS 08/08/2007 16:18:11
#230061
alguem sabe?
USUARIO.EXCLUIDOS 08/08/2007 16:19:07
#230062
Resposta escolhida
BOM CARA...

ACHEI ISSO EM UM FORUM TALVEZ ATENDA O QUE ESTEJA PROCURANDO


 Para início, vamos relembrar 1h = 60min. Isto é só para relembrar você de que para transformar h em min e só multiplicar por 60.

Todos os cálculos serão realizados em minutos, então para entrada de dados você deve ter dois controles diferentes, um para horas e outro para minutos. Converta as horas em minutos depois some com os minutos restantes do outro controle.


Agora você já tem o 1º. Valor (vamos chamar de x) . Agora faça o mesmo para um segundo valor (vamos chamar de y).


Preste atenção agora que você tem os dois valores “x” e “y”, você pode realizar qualquer operação com eles. Mas tem um porém, o valor resultante de uma operação entre “x” e “y” é em minutos.


Para resolver este problema crie um while da seguinte forma:


Suponhamos que seja feita a seguinte operação x + y = z


Neste caso o valor retornado será sempre positivo e > 0 então para essa ocasião temos.


X = minutos

Y = minutos

Z = minutos




do while z >= 60z = z ­ 60horas = horas + 1Loop




Obs.: sendo horas uma variável declarada. Para exibir o resultado faça text1.text = horas & “ : “ & z


Atenção se a operação for subtração deverá ser criado um while para números negativos:




Do while z < 0 and z <= -60z = z + 60horas = horas +1Loop




Tome cuidado para não ficar preso em um loop infinito.


QUALQUER COISA POSTA AI

ATT,

MARCELO BRESSAN
USUARIO.EXCLUIDOS 08/08/2007 16:24:26
#230065
Amigo,

a passagem de 23:55 para 00:00, ocorre uma mudança de data certo??

exemplo, 23:55 de hoje ainda será dia 08/08, já 00:00 será dia 09/08. Por isso a confusão nos cálculos.


Se vc fizer desta forma, utilizando as datas também, dará certo:
Result = DateDiff("n", "08/08/2007 23:55", "09/08/2007 00:00")
MsgBox Result



Agora se vc realmente só tiver as horas, aí fica mais difícil, tente tratar o 0, substituindo por 24, tipo da forma abaixo:
    Dim HorasIni    As Integer
Dim HorasFim As Integer
Dim MinutosIni As Integer
Dim MinutosFim As Integer

Dim Result As Integer

HorasIni = Hour("23:55")
HorasFim = Hour("00:00")

If HorasFim = 0 Then
HorasFim = 24
End If

MinutosIni = Minute("23:55")
MinutosFim = Minute("00:00")

Result = Abs(((HorasFim * 60) + MinutosFim) - ((HorasIni * 60) + MinutosIni))

MsgBox Result

USUARIO.EXCLUIDOS 08/08/2007 16:25:55
#230066
vlw cara, vo tenta aqui...
Tópico encerrado , respostas não são mais permitidas