C?LCULO ENTRE DATA

NILTON.VIANNA 20/04/2016 09:33:35
#461157

Bom dia
Estou tentando fazer um cálculo entre datas gostaria de obter o seguinte resultado.
Exemplo:
Período entre 10/01/2016 a 20.04.2016

Resultado: Você está com 14 Semanas e 3 dias
Grato
PERCIFILHO 20/04/2016 09:56:29
#461158
Talvez aqui esteja a sua resposta:
http://pt.stackoverflow.com/questions/6158/como-obter-o-n%C3%BAmero-de-semanas-num-intervalo-de-datas-em-c
Sei que está em C# mas é muito fácil adaptar ao seu código em VB.Net.
ELUCIMAR 20/04/2016 10:59:07
#461161
NILTON_VIANNA

Criei uma função para este fim, é só adaptar ao seu Sistema.

Public Function DateDiffWeekAndDay(dataInicial As DateTime, dataFinal As DateTime) As String

Dim countDia As Integer = Convert.ToInt32(dataFinal.Subtract(dataInicial).TotalDays)
Dim countSemana As Integer = IIf(countDia > 0, (countDia / 7), 0)
Dim sobraDia As Integer = (countDia Mod 7)

If (countDia > 0) Then
If (countSemana > 0 And sobraDia > 0) Then
Return [Ô]Você está com [Ô] & countSemana.ToString() + [Ô] semana(s) e [Ô] & sobraDia.ToString() & [Ô] dia(s)[Ô]
ElseIf (countSemana > 0 And sobraDia = 0) Then
Return [Ô]Você está com [Ô] & countSemana.ToString() + [Ô] semana(s)[Ô]
Else
Return [Ô]Você está com [Ô] & countDia.ToString() + [Ô] dia(s)[Ô]
End If
Else
Return String.Empty
End If

End Function
JABA 20/04/2016 14:07:29
#461170
Resposta escolhida
    
Dim d1 As Date = [Ô]10/01/2016[Ô]
Dim d2 As Date = [Ô]20/04/2016[Ô]
Dim r As Decimal = Convert.ToDecimal(DateDiff(DateInterval.Day, d1, d2) / 7)
Dim semanas = Math.Truncate(r)
Dim dias = Math.Truncate((r - Math.Truncate(r)) * 10)

MsgBox([Ô]Esse intervalo de datas possui [Ô] & semanas & [Ô] semanas e [Ô] & dias & [Ô] dias[Ô])

NILTON.VIANNA 20/04/2016 14:27:50
#461171
Porque no teste na internet da um dia de diferença de um dia

Resultado
Provável em: 26/12/2015
Data provável: 16/10/2016
Status: 14 semanas e 3 dias

Data do teste: 20/04/2016
JABA 20/04/2016 15:10:54
#461172
Citação:

Porque no teste na internet da um dia de diferença de um dia



Qual site?
NILTON.VIANNA 20/04/2016 15:30:18
#461174

Jaba

https://www.alobebe.com.br/portal/calculadora-gestacional/Default.asp
JABA 20/04/2016 15:40:51
#461175
Talvez eles não estejam levando em conta o dia atual, pois ele ainda não terminou. Se quiser fazer que nem o deles, é só subtrair em 1 a variável dias. Em contrapartida, se você fizer o teste manualmente vai bater exatamente com o que eu te passei. Coloque um intervalo de duas semanas e com 1 dia a mais de diferença e veja o resultado.
NILTON.VIANNA 22/04/2016 09:48:41
#461219

JABA

Desta forma bate com quaisquer testes

Dim d1 As Date = txtDtaUm.Text [ô][Ô]10/01/2016[Ô]
Dim d2 As Date = Now [ô] [Ô]22/04/2016[Ô]
Dim r As Decimal = Convert.ToDecimal(DateDiff(DateInterval.Day, d1, d2) / 7)
Dim semanas = Math.Truncate(r)
Dim dias = Math.Truncate((r - Math.Truncate(r)) * 8)

JABA 22/04/2016 13:48:24
#461241
Se multiplicando por 8 ficou bom para o que precisa, então deixe assim mesmo. Porém, saiba que perde um pouco da precisão, pois multiplicando por 10 só muda a virgula de lugar, já com o 8, muda os valores.
NILTON.VIANNA 22/04/2016 14:09:15
#461242
Valeu JABA
Tópico encerrado , respostas não são mais permitidas