// post

Programación

Calcular edad en Java

Me ha costado averiguar cómo se calcula la edad de una persona usando Java, así que dejo aquí mi solución por si a alguien más le pudiera servir.

public int calcularEdad(Calendar fechaNac){
    Calendar today = Calendar.getInstance();
   
    int diff_year = today.get(Calendar.YEAR) - fechaNac.get(Calendar.YEAR);
    int diff_month = today.get(Calendar.MONTH) - fechaNac.get(Calendar.MONTH);
    int diff_day = today.get(Calendar.DAY_OF_MONTH) - fechaNac.get(Calendar.DAY_OF_MONTH);

    //Si está en ese año pero todavía no los ha cumplido
    if(diff_month<0 || (diff_month==0 && diff_day<0)){
        diff_year = diff_year - 1; //no aparecían los dos guiones del postincremento :|
    }
    return diff_year;
}
 

Gracias a Blaxter por el chivazo del plugin de resaltado.

Comentarios

Los comentarios están cerrados.

  1. Con lo fácil que es hacer Edad e = persona.preguntar(”¿cuántos años tienes?”);!!

    Escrito por Alfonso E. | 15/Abr/2008, 7:55 pm
  2. qué bonito es Java </ironía>. En ruby podríamos hacer algo como:

    >> born_date = Date.parse(’1984-09-18′)
    >> ((Date.today - born_date) / 365.2475).to_i
    => 23

    O me hago algo como:

    class Date
    def years_old
    ((Date.today - self) / 365.2475).to_i
    end
    end

    y ahora:

    una_fechas.years_old

    O accediendo a métodos .year, .month, .day sin más vamos. El tema de las fechas en Java es un punto delicado y realmente desastroso. Hay un JSR, 310, desde hace un tiempo para solucionar esto, pero no sé si está ya listo para usar o no, pues gracias a FSM no uso Java desde hace un tiempo. Aquí una charla interesante sobre el tema:

    Escrito por Blaxter | 15/Abr/2008, 8:17 pm
  3. *cof* *cof*

    import datetime
    edad = datetime.date.today() - datetime.date(1976, 10, 26)
    print edad.days / 365
    31

    *cof*

    Escrito por nauj27 | 15/Abr/2008, 9:08 pm
  4. @DraXus, por cierto la comprobación la has puesto al revés, tiene que ser si la diferencia es negativa restar 1.

    Escrito por Blaxter | 15/Abr/2008, 9:16 pm
  5. @Alfonso E.: claro, suponiendo que tengas la clase Edad y Persona implementadas xD
    @Blaxter: sí, qué bonito es ruby pero es difícil de aprender y lento, pa eso me quedo con el python de @nauj27 xD Gracias por la corrección, al principio lo puse bien y luego me rayé y lo puse mal :S

    Escrito por DraXus | 15/Abr/2008, 9:40 pm
  6. Bueno, tal vez algún día esté todo implementado en java. Incluso cada uno tengamos nuestra propia clase xDD

    Escrito por Alfonso E. | 16/Abr/2008, 9:36 pm
  7. Yo tambien me quedo con Python.

    Escrito por Javier | 22/Abr/2008, 6:47 am
  8. Gracias hermano.. me faltaba el detalle del if.

    Escrito por Crunchover | 9/May/2008, 12:42 am

Bienvenido a The Power of Mind

The Power of Mind es el blog personal de DraXus, orientado a temas de Informática, Software Libre e Internet. Más sobre el autor…

del.icio.us flickr plurk twitter skype
linkedin facebook tuenti lastfm youtube

flickr

También escribo en

The Power of Light
Sueño Colectivo