MOSTRAR A IDADE EM ANOS, MESES, SEMANAS, DIAS, ETC
Olá pessoal.
A tempos atrás peguei um exemplo daqui de um projeto em .NET que através de uma data o sistema calcula a idade em anos, meses, semanas, dias, horas, minutos e segundos. Achei bem interessante o exemplo mas não achei mais. Alguém poderia postar o código de como faz isso?
Eu consegui chegar apenas nos anos e meses.
Aguardo retorno e desde já agradeço.
A tempos atrás peguei um exemplo daqui de um projeto em .NET que através de uma data o sistema calcula a idade em anos, meses, semanas, dias, horas, minutos e segundos. Achei bem interessante o exemplo mas não achei mais. Alguém poderia postar o código de como faz isso?
Eu consegui chegar apenas nos anos e meses.
Dim idadeMeses, idadeAnos,diferenca As Double
Dim datanascimento As Date = [Ô]10/06/2011[Ô]
diferenca = DateDiff(DateInterval.Day, datanascimento, Date.Now)
idadeAnos = diferenca / 365.25
idadeMeses = ((idadeAnos - Int(idadeAnos)) * 12)
MsgBox([Ô]Você tem [Ô] & Int(idadeAnos) & [Ô] anos e [Ô] & Int(idadeMeses) & [Ô] meses de vida.[Ô])
Aguardo retorno e desde já agradeço.
Function CalculaTempo(ByVal Entrada As Date)
Dim Anos, Meses, Dias, iAnos, iMeses, iDias As Double
Dim diasDiff As String
Anos = DateDiff(DateInterval.Year, Entrada, Date.Today)
Entrada = DateAdd(DateInterval.Year, Anos, Entrada)
If Entrada < Date.Today Then
iMeses = DateDiff(DateInterval.Month, Date.Today, Entrada)
diasDiff = DatePart(DateInterval.Day, Date.Today) - DatePart(DateInterval.Day, Entrada)
ElseIf Entrada = Date.Today Then
iMeses = DateDiff(DateInterval.Month, Entrada, Date.Today)
diasDiff = DatePart(DateInterval.Day, Date.Today) - DatePart(DateInterval.Day, Entrada)
ElseIf Entrada > Date.Today Then
Anos = Anos - 1
iMeses = 12 - DateDiff(DateInterval.Month, Date.Today, Entrada)
diasDiff = DatePart(DateInterval.Day, Date.Today) - DatePart(DateInterval.Day, Entrada)
End If
Dim diamesDtAdmin As Double = Date.DaysInMonth(DatePart(DateInterval.Year, Date.Today), DatePart(DateInterval.Month, Date.Today))
If diasDiff = diamesDtAdmin Then
diasDiff = 0
iMeses = iMeses + 1
End If
If iMeses = 12 Then
Anos = Anos + 1
End If
Dim AnosTexto, MesesTexto, DiasTexto As String
If CInt(Anos) = 1 Then
AnosTexto = [Ô] Ano, [Ô]
Else
AnosTexto = [Ô] Anos, [Ô]
End If
If iMeses = 1 Then
MesesTexto = [Ô] mês e [Ô]
Else
MesesTexto = [Ô] meses e [Ô]
End If
If diasDiff = 1 Then
DiasTexto = [Ô] dia.[Ô]
Else
DiasTexto = [Ô] dias.[Ô]
End If
If String.IsNullOrEmpty(txtTempoAdicionalA.Text) Then
txtTempoAdicionalA.Text = 0
End If
lbltempo.Text = CInt(Anos) + txtTempoAdicionalA.Text & AnosTexto & Math.Abs(iMeses) & MesesTexto & Math.Abs(CInt(diasDiff)) & DiasTexto
End Function
Olá Teko, obrigado pela resposta.
Eu já tinha visto esta solução, porém, dá os meses errados. Vou adaptar para ver como fica.
Eu já tinha visto esta solução, porém, dá os meses errados. Vou adaptar para ver como fica.
Bem, o objeto TimeSpan, não é lá muito completo nisso. E aqui no Brasil se usa muito esse tipo de calculo de tempo. Com isso em mente, você pode usar um recurso do .NET Framework, aliado à um calculo. Você precisa de uma classe para os valores de tempo e uma extensão para DateTime. Vou deixar um exemplo aqui, quem quiser aproveitar, sinta-se à vontade!
Faça seu login para responder