Jump to content
EdiSimoes

[Resolvido] Calcular média de tempo.

Recommended Posts

EdiSimoes

Alguem poderia me ajudar a calcular a média de 3 valores de tempo, tenho um BD SqlServer2008, que guarda 2 campos DateTime e um Campo Varchar com o cálculo dos dois DateTime, o cálculo da diferença está sendo gravado assim: 20:00:00, 32:00:00, 26:10:00,

como eu calcularia a média desses resultados???

Desde já obrigado.

Edi


Edi Carlos Simões

Estudante de Análise e Desenvolvimento de Sistemas

edisimoes@bol.com.br

http://www.desenvolvenetma.com.br

http://analisedesistemas.bl.ee

Share this post


Link to post
Share on other sites
NunoDinis

Podes substituir os dois pontos por apenas ponto, efetuar a soma. De seguida calcular a média.

Creio que resolverá o problema..


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
NunoDinis

Média = (valor 1 + valor 2 + ... + Valor n) / n

Isso é a formula para o calculo da média.

O problema está em como somar as datas... vamos esperar pelo feedback.


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
EdiSimoes

Fiz assim, mais não fucionou:

lblValor1.Text = "20.00.00"
lblValor2.Text = "25.10.00"
lblValor3.Text = "35.36.00"
lblTotal.Text = Val(lblValor1.Text + lblValor2.Text + lblValor3.Text) / 3

retornou assim: 6,66666666

Edited by Caça
GeSHi

Edi Carlos Simões

Estudante de Análise e Desenvolvimento de Sistemas

edisimoes@bol.com.br

http://www.desenvolvenetma.com.br

http://analisedesistemas.bl.ee

Share this post


Link to post
Share on other sites
veaoum

falando apenas de cor sem ver nada isto não funcionara?

dim primeiro () as integer = split(lblvalor1.text,":")
dim segundo () as integer = split(lblvalor2.text,":")
dim terceiro () as integer = split(lblvalor3.text,":")
dim media as new datetime
media.addmillesecunds((primeiro(2)+segundo(2)+terceiro(2))\3)
media.addminute((primeiro(1)+segundo(1)+terceiro(1))\3)
media.addhours((primeiro(0)+segundo(0)+terceiro(0))\3)

depois retornas a media em formato hora.

Share this post


Link to post
Share on other sites
passarito

Se não te ajeitares com o TimeSpans experimenta uma forma rudimentar:

1. Descobre qual a data mais pequena;

2. Soma a todas as diferenças de cada data relativamente à mais pequena. Algo do género:

total_dif := 0;
....
{Para cada data}
total_dif := total_dif + (data - data_pequena);
....

3. Divide esse total pela quantidade de datas (incluindo a mais pequena)

4. Adiciona em dias, o número que te deu anteriormente, à data mais pequena.

E voilá, tens a média das datas!

Edited by passarito

Share this post


Link to post
Share on other sites
thoga31

Um teste simples em VB.NET com TimeSpan. Confio em como haja talvez um método mais simples, mas este foi o primeiro que me veio à ideia:

Dim media As New TimeSpan(0, 0, 0)
Dim contador As Integer = 0
Dim horas()() As String = {"20:00:00".Split(":"), "32:00:00".Split(":"), "26:10:00".Split(":")}

For Each h In horas
   media = media.Add(New TimeSpan(h(0), h(1), h(2)))
   contador += 1
Next

media = New TimeSpan(media.Ticks / contador)

MsgBox(media.Days & "d " & media.Hours & ":" & media.Minutes & ":" & media.Seconds & _
      vbNewLine & media.Ticks)

Espero que te possa dar ideias.

Cumprimentos.


Knowledge is free!

Share this post


Link to post
Share on other sites
EdiSimoes

Bom dia.

Fiz assim deu certo:

lblValor1.Text = "20:10:00"
 lblValor2.Text = "10:10:00"
 lblValor3.Text = "30:10:00"

 Dim media As New TimeSpan(0, 0, 0)
 Dim contador As Integer = 0
 Dim horas()() As String = {lblValor1.Text.Split(":"), lblValor2.Text.Split(":"), lblValor3.Text.Split(":")}
 For Each h In horas
	 media = media.Add(New TimeSpan(h(0), h(1), h(2)))
	 contador += 1
 Next
 media = New TimeSpan(media.Ticks / contador)
 lblTotal.Text = media.Hours & ":" & media.Minutes

Agradecido pela ajuda de vcs do forum.

Edi

Edited by Caça
GeSHi

Edi Carlos Simões

Estudante de Análise e Desenvolvimento de Sistemas

edisimoes@bol.com.br

http://www.desenvolvenetma.com.br

http://analisedesistemas.bl.ee

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.