我如何计算死亡年龄?

时间:2011-03-04 15:12:18

标签: java

  

可能重复:
  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到今天的日期,而不是我使用的格式。

2 个答案:

答案 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.

使用.getTime()方法

这样做的一个相当简单的方法可能是 long millisecondsDiff = petDetails.getDateOfDeath()。getTime - petDetails.getDateOfBirth()。getTime;

然后,您可以直接从此长度创建新的日期对象,也可以进行正确的计算以将毫秒更改为天。即
long age = millisecondsDiff /(1000 * 60 * 60 * 24);