如何获得两个之间的年数java.util.Date
?
注意:仅使用java.util.Date
您需要准确到什么程度?如果近似值足够好,那么我会做
long msDiff = date1.getTime() - date2.getTime();
int yearDiff = (int)(msDiff / 1000 / 60 / 60 / 24 / 365.25);
你真的需要使用java.util.Date吗?
如果您放宽此限制并允许使用Joda Time - Java 日期和时间 API,您可以像这样完成您的任务:
import org.joda.time.DateTime;
import org.joda.time.Period;
import static java.lang.System.out;
public class App {
public static void main(String[] args) {
final DateTime now = new DateTime();
out.println(new Period(now.minusYears(2), now).getYears());
out.println(new Period(now.minusYears(2).plusHours(1), now).getYears());
}
}
输出结果为:
2
1
如果您不能使用Joda Time ,请使用java.util.Calendar。
对每个 Date 对象使用 getTime 方法并进行减法。将结果转换为年。
我假设,因为这个问题在 GWT 下被标记,所以您正在尝试在 GWT 应用程序中进行日期数学。GWT 的仿真库实现了已弃用的函数 Date.getYear(),在这种情况下,您只需执行 date2.getYear() - date1.getYear()。
使用不推荐使用的函数不是最好的,但似乎是 GWT 开发世界中的常见做法。