Ir para conteúdo

POWERED BY:

Arquivado

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

brissolare

[Resolvido] Pegar idade a partir da data de nascimento

Recommended Posts

Bom dia Pessoal,

 

Preciso pegar a idade da pessoa juntamente com meses e dias...

 

Eu consigui fazer isso via codigo...mas deu umas 360 linhas........ e está muito confuso...fiz assim:

 

pego o ano..se o ano for igual a zero...... pego o mes, se o mes for igual a zero, pego dia... e por ai vai..vou checando...

 

Tem algum metodo que me informa isso...eu consegui os dias pelo TimeSpam mas nao consegui anos, meses e dias

 

Abraços

 

Brissolare

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia,

 

Deixa ver se eu entendi.

Você quer calcular a idade do usuário que tem a data de nascimento no banco.

 

Depois você quer saber o Mês de nascimento e dia?

 

Se for isso é simples.

 

Basta fazer o que você fez no ano, e para meses e dias você cria um array.

 

string[] month = { "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" };

 

Espero ter ajudado. Abraço e sucesso!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha

 

não sei se vai ajudar, mas tem uma classe TimeSpan que retona a diferença entre duas datas.

 

Ou seja, você joga a data de nascimento e a data atual.

 

Olha só:

 

TimeSpan l_diferençaTempo = Datetime.Now.Subtract("variavelDatadeNascimento")

 

Esse código retona até segundos de diferença

 

Agora é só você tratar, converter pra int, string....

 

Me desculpa esqueci de falar....

 

você precisa divir o número de dias por 365.25, porque aí já conta o ano bi-sexto.

 

Espero ter ajudado.

 

 

 

Um abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Rafaselic,

 

Então eu utilizei essa classe..ela é bem legal...mas o problema por exemplo qu e fevereiro nao tem 30 ou 31 dias...ou seja....se eu dividir vou até dar os meses exatos agora os dias nao...

 

Ai acaba dando problemas pois pode ter atraso ou acresico de algumas dias na idade da forma que eu quero (EX: 11 anos, 2 meses e 5 dias)

 

Mas mesmo assim obrigado

 

brissolare

Compartilhar este post


Link para o post
Compartilhar em outros sites

A TimeSpan faz isso, usando o exemplo que Rafaselic postou, ficaria assim:

 

TimeSpan diferenca = Datetime.Now.Subtract("variavelDatadeNascimento")
int anos = diferenca.Years;
int meses = diferenca.Months;
int dias = diferenca.Days;
Console.WriteLine("{0} anos, {1} meses, {2} dias", anos, meses, dias);

Faça um teste e coloque o resultado :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

A TimeSpan faz isso, usando o exemplo que Rafaselic postou, ficaria assim:

 

TimeSpan diferenca = Datetime.Now.Subtract("variavelDatadeNascimento")
int anos = diferenca.Years;
int meses = diferenca.Months;
int dias = diferenca.Days;
Console.WriteLine("{0} anos, {1} meses, {2} dias", anos, meses, dias);

Faça um teste e coloque o resultado :)

 

Boa noite Oenning .

 

Está acontecendo o seguinte:

 

Error 2 'System.TimeSpan' does not contain a definition for 'Years' and no extension method 'Years' accepting a first argument of type 'System.TimeSpan' could be found (are you missing a using directive or an assembly reference?) C:\Documents and Settings\Tony\Meus documentos\Visual Studio 2008\Projects\WebApplication5\WebApplication5\Default.aspx.cs 22 22 WebApplication5

 

 

Nao deu certo não...pelo que vi a classe time span dá somente a opção dos dias minutos e segundos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal Consegui

 

Para quem tem interesse:

 

 

protected void btn_Click(object sender, EventArgs e)
	{
		int years=-1,months=-1,days=-1;
		DateTime birthDate = Convert.ToDateTime(txt1.Text);
		TimeSpanToDate (DateTime.Now, birthDate,out years,out months,out days);
		Response.Write("Years: "+ years.ToString()+ " Months: "+ months.ToString()+" Days: "+ days.ToString());  
	}
public void TimeSpanToDate(DateTime d1, DateTime d2,out int years, out int months, out int days)
{
// compute & return the difference of two dates,
// returning years, months & days
// d1 should be the larger (newest) of the two dates
// we want d1 to be the larger (newest) date
// flip if we need to
if (d1 < d2)
{
DateTime d3= d2;
d2= d1;
d1= d3;
}

// compute difference in total months
months= 12 * (d1.Year - d2.Year) + (d1.Month - d2.Month);

// based upon the 'days',
// adjust months & compute actual days difference
if (d1.Day < d2.Day)
{
months--;
days = DateTime.DaysInMonth(d2.Year, d2.Month) - d2.Day + d1.Day;
}
else
{
days= d1.Day - d2.Day;
}
// compute years & actual months
years= months / 12;
months-= years * 12;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia a todos

 

Preciso de algo semelhante a isso, porém que me retorne hora, minutos e segundos

O campo que preciso fazer a diferença contem Data e Hora, o retorno teria que ser dias, meses, anos, horas, minutos e segundos.

 

É possivel?

 

 

Pessoal Consegui

 

Para quem tem interesse:

 

 

protected void btn_Click(object sender, EventArgs e)
	{
		int years=-1,months=-1,days=-1;
		DateTime birthDate = Convert.ToDateTime(txt1.Text);
		TimeSpanToDate (DateTime.Now, birthDate,out years,out months,out days);
		Response.Write("Years: "+ years.ToString()+ " Months: "+ months.ToString()+" Days: "+ days.ToString());  
	}
public void TimeSpanToDate(DateTime d1, DateTime d2,out int years, out int months, out int days)
{
// compute & return the difference of two dates,
// returning years, months & days
// d1 should be the larger (newest) of the two dates
// we want d1 to be the larger (newest) date
// flip if we need to
if (d1 < d2)
{
DateTime d3= d2;
d2= d1;
d1= d3;
}

// compute difference in total months
months= 12 * (d1.Year - d2.Year) + (d1.Month - d2.Month);

// based upon the 'days',
// adjust months & compute actual days difference
if (d1.Day < d2.Day)
{
months--;
days = DateTime.DaysInMonth(d2.Year, d2.Month) - d2.Day + d1.Day;
}
else
{
days= d1.Day - d2.Day;
}
// compute years & actual months
years= months / 12;
months-= years * 12;
}

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.