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

use*_*445 5 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;
  }
Run Code Online (Sandbox Code Playgroud)

use*_*301 8

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

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

  • AFAIK - 基于JodaTime库 - 我认为基本上,他们必须手动完成任务,没有第三方和构建库;) (2认同)