可能重复:
How can I calculate the age of a person in year, month, days?
How can I calculate the difference between two dates
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
if(petDetails.getDateOfDeath() != null){
String formatedDateOfDeath = formatter.format(petDetails.getDateOfDeath());
String formateDateOfBirth = formatter.format(petDetails.getDateOfBirth());
}
如何从上面计算死亡年龄。我不想使用任何外部库
编辑:请看看我到目前为止所做的事情。其他线程都不像我的。他们中的大部分都是关于从DOB到今天的日期,而不是我使用的格式。
答案 0 :(得分:0)
试试这个:
public class Age {
public static void main(String[] args) {
Calendar birthDate = new GregorianCalendar(1979, 1, 1);
Calendar deathDate = new GregorianCalendar(2011, 1, 1);
int age = deathDate.get(Calendar.YEAR) - birthDate.get(Calendar.YEAR);
if ((birthDate.get(Calendar.MONTH) > deathDate.get(Calendar.MONTH))
|| (birthDate.get(Calendar.MONTH) == deathDate.get(Calendar.MONTH) && birthDate.get(Calendar.DAY_OF_MONTH) > deathDate
.get(Calendar.DAY_OF_MONTH))) {
age--;
}
System.out.println(age);
}
}
答案 1 :(得分:0)
您可以在不将其转换为字符串的情况下解决此问题。
由于getDateOfBirth和getDateOfDeath返回日期对象,你可以对Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this Date object.
这样做的一个相当简单的方法可能是 long millisecondsDiff = petDetails.getDateOfDeath()。getTime - petDetails.getDateOfBirth()。getTime;
然后,您可以直接从此长度创建新的日期对象,也可以进行正确的计算以将毫秒更改为天。即
long age = millisecondsDiff /(1000 * 60 * 60 * 24);