在Java中如何计算年龄

在Java中如何计算年龄,java,sql,eclipse,oop,Java,Sql,Eclipse,Oop,我在计算年龄方面有问题 public long getAlter() { Date now = new Date(); long yearInMillis = 365 * 24 * 60 * 60 * 1000; long alter = (now.getTime() - buildYear.getTime()) /365/24/60/60/1000 ; return alter; } 建筑年份为:2007年5月22日 -->(年月日) 我需要一个

我在计算年龄方面有问题

public long getAlter() {

    Date now = new Date();
    long yearInMillis = 365 * 24 * 60 * 60  * 1000;
    long alter =   (now.getTime() - buildYear.getTime()) /365/24/60/60/1000 ;

    return alter;
}
  • 建筑年份为:2007年5月22日
-->(年月日)

  • 我需要一个函数来计算年份(不是月份左右),在这里的示例中:7年
  • 我需要一个函数来计算天数,在这个例子中是2576天
  • 我如何定义这一点

    像这样:

    (已选择)


    @这不是复制品,因为我不会和乔达一起工作

    这个链接似乎做了类似的事情:

    如果链接中断,下面是所说的:

    查看Joda,它简化了日期/时间计算(Joda也是 新的标准Java日期/时间API的基础,因此 学习即将成为标准的API)

    编辑:Java8将有一些非常相似的东西,值得一试 退房

    e、 g

    LocalDate birthdate = new LocalDate (1970, 1, 20);
    LocalDate now = new LocalDate();
    Years age = Years.yearsBetween(birthdate, now);
    
    那是 尽可能简单。当前的Java内容是(正如您所看到的) (已识别)有点不直观


    你是说SO中的链接吗?@BrianAgnew是的-我怀疑它是否会被破坏,但在极少数情况下,问题或答案会被删除。@user3714925-你为什么不使用Joda?不,我不会使用Joda!使用
    /365/24/60/60/1000
    @user3714925 Duplicate不建议仅使用Joda,您将获得大量舍入错误。您还可以使用Java8或
    Calendar
    中添加的类,如该问题的不同答案所示。顺便说一句,您在
    365*24*60*60*1000中遇到整数溢出问题。要解决此问题,请使用
    long
    作为乘法的第一个参数,以便其他参数的长度与
    365L*24*60*60*1000类似。另外,您没有指定机制是否还应包括时间(小时、分钟)。这个细节很重要,因为在
    1.1.2001 12:00
    2.1.2001 11:59
    之间不会有一整天,因为你会缺少一秒钟。