miércoles, enero 21, 2009

Calcular la edad

El calculo de la edad de una persona es un calculo típico cuando se trabaja con personas, ya sea para enviar un email de felicitación de aniversario, estadisticas u otras multiples funcionalidades. He visto por la web diferentes códigos más o menos complicados, yo dejo 2, uno para el cálculo de la edad mediante codigo c# y otro para el cálculo de la edad via sql.

Calculo edad sql:

datepart(YYYY,getdate()) - datepart(YYYY,u.FechaNacimiento)
-case when datepart(dy, getdate()) < datepart(dy, u.FechaNacimiento) then 1
else 0
end
as Edad


Calculo edad c#:

int intAge = DateTime.Today.Year - lCandidate.BirthDate.Year;
if (DateTime.DaysInMonth(DateTime.Today.Year, lCandidate.BirthDate.Month) >= lCandidate.BirthDate.Day && new DateTime(DateTime.Today.Year, lCandidate.BirthDate.Month, lCandidate.BirthDate.Day) > DateTime.Today)
intAge--;
else if (DateTime.DaysInMonth(DateTime.Today.Year, lCandidate.BirthDate.Month) < lCandidate.BirthDate.Day && new DateTime(DateTime.Today.Year, lCandidate.BirthDate.Month, DateTime.DaysInMonth(DateTime.Today.Year, lCandidate.BirthDate.Month)) > DateTime.Today)
{
intAge--;
}

9 comentarios:

  1. nesesito saber el codigo para calcular la edad de una persona tomando en cuenta los dias bisiestos, en C# en modo formulario.

    Gracias

    ResponderEliminar
  2. Este es el cálculo de la edad en c# en modo formulario:

    int edad = DateTime.Today.Year - FechaNacimiento.Today.Year;
    if (new DateTime(DateTime.Today.Year, FechaNacimiento.Month, FechaNacimiento.Day)>DateTime.Today) edad--;

    ResponderEliminar
  3. hola
    hey mira
    yo estoy empezando con c#
    este es mi codigo

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace WindowsFormsApplication4
    {
    public static int CalcularEdad(DateTime birthdate)
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
    int edad = DateTime.Today.Year - FechaNacimiento.Today.Year;
    if (new DateTime(DateTime.Today.Year, FechaNacimiento.Month, FechaNacimiento.Day) > DateTime.Today) edad--;
    }
    }
    }

    pero me tira un error y no se q es
    si me pudieras ayudar
    te lo agradeceria
    gracias

    ResponderEliminar
    Respuestas
    1. prueba colocando en el if FechaNacimiento.Date.Month y FechaNacimiento.Date.Day o
      FechaNacimiento.Value.Month y FechaNacimiento.Value.Day

      el cambio por el date o value dependerá del evento del control que estés utilizando.
      Espero te sirva..

      Eliminar
  4. Hola!, mejorando...

    FechaActual=DateTime.Now

    EdadActual = DateDiff("YYYY", FechaNacimiento, FechaActual) - IIf(FechaActual.ToString("dd/MM") < FechaNacimiento.ToString("dd/MM"), 1, 0)

    ...byGarck!

    ResponderEliminar
  5. y como método calcular edad no me compila!!! me puedes ayudar por favor?? en paciente.cs en mi #region metodos y en IUpaciente.cs...no sé q se usa en c# solo sé q se usa el Date Time pero ni así me sale...
    ayuda por favor??
    grax

    ResponderEliminar
  6. sty trabajando con windows application y con class library...

    ResponderEliminar
  7. muy buen codigo muchas gracias

    ResponderEliminar
  8. Gracias por la función para calcular la Edad en SQL SERVER. Simple y efectiva !

    ResponderEliminar