如何获取两个java.util.Date之间的年数?

时间:2008-11-14 12:33:40

标签: java gwt

如何获得两个java.util.Date之间的年数?

注意:仅使用java.util.Date

4 个答案:

答案 0 :(得分:9)

您需要多准确?如果近似值足够好,那么我会做

long msDiff = date1.getTime() - date2.getTime();
int yearDiff = (int)(msDiff / 1000 / 60 / 60 / 24 / 365.25);

答案 1 :(得分:1)

您真的需要使用 java.util.Date ??

如果您放宽此约束并允许使用 Joda Time - Java date and time 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

答案 2 :(得分:0)

对每个Date对象使用getTime方法并执行减法操作。将结果转换为年。

答案 3 :(得分:0)

我假设,因为这个问题是在GWT下标记的,所以你试图在a中进行日期数学运算 GWT应用程序。 GWT的仿真库实现了不推荐使用的函数Date.getYear(),在这种情况下你可以只使用date2.getYear() - date1.getYear()。

使用已弃用的函数并不是最好的,但在GWT开发世界中似乎是常见的做法。