用Java计算当前日期和出生日期的年龄

时间:2014-01-27 23:12:55

标签: java datetime

我刚刚开始使用java,我正在制作一个程序,根据年龄和性别确定一个人的租车费率。此方法根据当前日期和出生日期计算人的年龄。它有点工作,但是边缘情况有问题(例如,有时它会说你24岁时你才25岁)。如何修复它以使其返回确切的年龄而不是说它有时会比你大1岁? (请不要Joda,我不能在这个作业中使用它)

public static int calcAge(int curMonth, int curDay, int curYear,int birthMonth,int   birthDay,int birthYear) {

  int yearDif = curYear - birthYear;
  int age = 08;
  if(curMonth < birthMonth) {
     age = yearDif - 1;
     }
  if(curMonth == birthMonth) {
     if(curDay < birthDay) {
        age = yearDif - 1;
        }
     if(curDay > birthDay) {
        age = yearDif;
        }
     }
  if(curMonth > birthMonth) {
     age = yearDif;
     }

  return age;
  }

3 个答案:

答案 0 :(得分:8)

如果你可以使用Java 8,它比joda要好得多:

    LocalDate birthday = LocalDate.of(1982, 01, 29);
    long yearsDelta = birthday.until(LocalDate.now(), ChronoUnit.YEARS);
    System.out.println("yearsDelta = " + yearsDelta);

答案 1 :(得分:4)

在比较日期时需要检查等于

else if (curDay >= birthDay) {
    age = yearDif;
}

而不是

if(curDay > birthDay) {
    age = yearDif;
}

答案 2 :(得分:0)

您可以尝试使用“日期”将两个时间转换为纪元毫秒,然后简单地减去这些并通过简单的数学运算将差值转换回年份值。得到它?这将没有任何额外的库:)