4

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

注意:仅使用java.util.Date

4

4 回答 4

9

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

long msDiff = date1.getTime() - date2.getTime();
int yearDiff = (int)(msDiff / 1000 / 60 / 60 / 24 / 365.25);
于 2008-11-14T12:38:58.683 回答
1

你真的需要使用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

于 2008-11-25T14:07:30.793 回答
0

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

于 2008-11-14T12:41:19.350 回答
0

我假设,因为这个问题在 GWT 下被标记,所以您正在尝试在 GWT 应用程序中进行日期数学。GWT 的仿真库实现了已弃用的函数 Date.getYear(),在这种情况下,您只需执行 date2.getYear() - date1.getYear()。

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

于 2009-06-19T00:10:25.227 回答