【发布时间】:2014-06-10 14:06:09
【问题描述】:
我在计算年龄时遇到问题..
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;
}
- 给出的 buildYear:年份 22.05.2007。
--> (dd.mm.yyyy)
- 我需要一个函数来计算年份(不是月份左右),在此示例中:7 年。
- 我需要一个函数来计算天数,在本例中为 2576 天。
我该如何定义?
(已经选择)
@ALL:这不是重复的,因为我不会和 Joda 合作!
【问题讨论】:
-
不,我不会使用 Joda!
-
/365/24/60/60/1000会出现大量舍入错误 -
@user3714925 重复并不只建议 Joda。您还可以使用在 Java 8 或
Calendar中添加的类,如该问题的不同答案所示。顺便说一句,您在365 * 24 * 60 * 60 * 1000中遇到整数溢出问题。要解决它,请使用long作为乘法的第一个参数,因此其余参数也将像365L * 24 * 60 * 60 * 1000一样长。此外,您没有指定机制是否还应包括时间(小时、分钟)。这个细节很重要,因为1.1.2001 12:00和2.1.2001 11:59之间没有一整天,因为你会少一秒钟。