// 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/Apr/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/Apr/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/Apr/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/Apr/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/Apr/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/Apr/2008, 9:36 pm
  7. Yo tambien me quedo con Python.

    Escrito por Javier | 22/Apr/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

Recomendados

Yo participo en el Software Freedom Day 2011
AndaluciaPeople.com
Alhambrismo.com

flickr

Switch to our mobile site