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.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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.
Con lo fácil que es hacer Edad e = persona.preguntar(«¿cuántos años tienes?»);!!
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:
*cof* *cof*
import datetime
edad = datetime.date.today() – datetime.date(1976, 10, 26)
print edad.days / 365
31
*cof*
@DraXus, por cierto la comprobación la has puesto al revés, tiene que ser si la diferencia es negativa restar 1.
@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
Bueno, tal vez algún día esté todo implementado en java. Incluso cada uno tengamos nuestra propia clase xDD
Yo tambien me quedo con Python.
Gracias hermano.. me faltaba el detalle del if.