Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

davisvasconcellos

[Resolvido] soma de valores em horas

Recommended Posts

opa pessoal, to fazendo um sisteminha com uma espécie de ponto online para o cliente futuramente distribuir as horas trabalhadas em seus projetos e afins.

buscando no fórum vi que mutas pessoas tem problemas para tirar a diferenca entre 2 horarios.

fiz uma função q resolveu meu problema:

 

function calculaHora(e1,s1)

'hora inicial e final
e1=cdate(e1)
s1=cdate(s1)

'diferenca em minutos=n 
diferenca = dateDiff( "n", e1, s1 ) 

'obter o numero inteiro de horas
difHoras = int(diferenca / 60) 

'obter o numero de minutos com a funcao MOD
difMinuto = diferenca mod 60 

'concatenar os valores de hora e minuto
horaTotal=difHoras&":"&difminuto

'converte par o formato hora
horaTotal=cdate(horatotal)

calculaHora=horaTotal

end function

para usar basta fazer assim:

response.write calculaHora("9:10","12:00") ou response.write calculaHora(rs("entrada"),rs("saida")) ...

exibe: 2:50:00

 

moleza.

mas agora to com uma dúvida

tenho q somar 3 resultados por ex: 2:50 + 4:00 +2:00 = 8:50

 

nao achei no dateAdd como somar direto as horas.

tenho que fazer o mesmo processo?

1 - separar as horas inteiras (2+4+2)

2 - descobrir os minutos *60 = 480

3 - separar os minutos :50 + :00 + :00

4 - somar com os minutos das horas 480+50= 530

5 - descobrir quantas horas isso é equivalente como fiz na função (/60 , mod 60 , concatenar)

 

exixte alguma forma mais fácil ou o tormento é esse mesmo?

 

abraços

 

Davis

Compartilhar este post


Link para o post
Compartilhar em outros sites

<%
minutos = DateDiff("n","9:10","12:00")
horas = int(minutos/60)
minutos = minutos mod 60
response.write horas & "h" & minutos
%>

Aprendi com o Tio Mario. :rolleyes:

 

 

Não entedi a parte de somar... não seria só substituir o : por ponto? Somar e depois substituir o ponto por : ?

 

<%
soma = clng(replace("2:50",":",".")) + clng(replace("4:00",":",".")) + clng(replace("2:00",":","."))
response.write left(soma,len(soma)-2) & ":" & right(soma,2)
%>

Só que teria que adaptar, para que tenha no minimo 3 digitos o resultado.

 

Não conheço outra forma de somar isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o primeiro codigo q tu mandou é basicamente o q eu fiz, só q converti a string pra data novamente como cdate.

o segundo vou ter problema se eu somar por ex 2:50 + 1:30 = 3:80 e no certo seria 4:20.

 

o q eu to fazendo é isso:

'calcular as diferencas entre os horarios

horario1 = cdate(CalculaHora(entrada01,saida01))

horario2 = cdate(CalculaHora(entrada02,saida02))

horario3 = cdate(CalculaHora(entrada03,saida03))

 

'somar as horas inteiras

Horario1a = DateDiff("s", "00:00:00", Horario1)

Horario2a = DateDiff("s", "00:00:00", Horario2)

Horario3a = DateDiff("s", "00:00:00", Horario3)

TotalHoras = Int(Horario1a)+Int(Horario2a)+Int(Horario3a)

 

'descobrir os seg e min e somar novamente

Segundos = Int(TotalHoras Mod 60)

Minutos = Int(TotalHoras\60 Mod 60)

Horas = Int(TotalHoras\3600)

 

total_dia = horas&":"&minutos&":"&segundos

total_dia = cdate(total_dia)

 

 

eu queria saber se tem alguma coisa masi fácil. mas o codigo ta rodando beleza já.

abs

Davis

Compartilhar este post


Link para o post
Compartilhar em outros sites

<%
	Function converteHorarioSegundos(horario)
		Dim segundos, minutos, horas
		minutos = minute(horario)
		horas = hour(horario)
		segundos = second(horario)
		
		converteHorarioSegundos = (horas*3600) + (minutos*60) + segundos
	End Function

	Function converteSegundosHorario(segundos)
		Dim minutos, horas
		horas = int(segundos/3600)
		minutos = int((segundos mod 3600) / 60)
		segundos = int((segundos mod 3600) mod 60)
		if len(minutos) < 2 then : minutos = 0 & minutos : end if
		if len(segundos) < 2 then : segundos = 0 & segundos : end if
		
		converteSegundosHorario = horas & ":" & minutos & ":" & segundos
	End Function
	
	response.write converteSegundosHorario(converteHorarioSegundos("1:30:00") + converteHorarioSegundos("2:50:00"))
%>

Obs. Utilize a função FormatDateTime para formatar o horário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, vai me desculpar, mas não entendi.

 

Explica melhor, se possivel com um exemplo pratico pois creio que consiga te ajudar nessa

Compartilhar este post


Link para o post
Compartilhar em outros sites

<%
	Function converteHorarioSegundos(horario)
		Dim segundos, minutos, horas
		minutos = minute(horario)
		horas = hour(horario)
		segundos = second(horario)
		
		converteHorarioSegundos = (horas*3600) + (minutos*60) + segundos
	End Function

	Function converteSegundosHorario(segundos)
		Dim minutos, horas
		horas = int(segundos/3600)
		minutos = int((segundos mod 3600) / 60)
		segundos = int((segundos mod 3600) mod 60)
		if len(minutos) < 2 then : minutos = 0 & minutos : end if
		if len(segundos) < 2 then : segundos = 0 & segundos : end if
		
		converteSegundosHorario = horas & ":" & minutos & ":" & segundos
	End Function
	
	response.write converteSegundosHorario(converteHorarioSegundos("1:30:00") + converteHorarioSegundos("2:50:00"))
%>

Obs. Utilize a função FormatDateTime para formatar o horário.

fala kra. é praticamente a mesma cosia q eu fiz.

tem q colocar tudo em uma mesma base para depois juntar as duas horas.

não dá pra mandar direto 3:50 + 5:20 = 9:10 pois sairia 8:70

 

valew a ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, vai me desculpar, mas não entendi.

 

Explica melhor, se possivel com um exemplo pratico pois creio que consiga te ajudar nessa

 

fala kra. relax

o q eu queria era somar direto duas horas tipo 4:30+3:50 = 8:20 , mas direto só vou conseguir 7:80 como eu respondi ai em cima.

mas ja ta relax, converti todos para a mesma base,somei e descobri quantas horas akilo equivale.

 

mas valew pela ajuda

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse último código que criei soma corretamente.

 

Mas se você já resolveu, beleza.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.