Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取两个java.util.Date之间的年数?_Java_Gwt - Fatal编程技术网

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

如何获取两个java.util.Date之间的年数?,java,gwt,Java,Gwt,如何获得两个java.util.Date之间的年数 注意:仅使用java.util.Date您需要多准确?如果近似值足够好的话,我会的 long msDiff = date1.getTime() - date2.getTime(); int yearDiff = (int)(msDiff / 1000 / 60 / 60 / 24 / 365.25); 对每个日期对象使用getTime方法并执行减法。将结果转换为年。您真的需要使用吗 如果您想放松此限制并允许使用,您可以这样完成任务: impo

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


注意:仅使用
java.util.Date

您需要多准确?如果近似值足够好的话,我会的

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

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

您真的需要使用吗

如果您想放松此限制并允许使用,您可以这样完成任务:

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

如果你不能使用。

我假设,因为这个问题是在GWT下标记的,所以你正在尝试用一个 GWT应用程序。GWT的仿真库实现了不推荐使用的函数Date.getYear(),在这种情况下,只需执行date2.getYear()-date1.getYear()


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

这不会编译-您将需要显式转换为int.+1(模数转换)-仅使用java.util.Date,如果不复制一组GregoriaCalendar,您将无法获得更准确的结果。这对于闰年来说是不正确的,因为1900年不是闰年(可以用100进行偏差,但2000年是可以用400进行偏差的)@Drejc-这段代码根本不试图补偿闰年。尽管你说这不准确,但我认为这是危险的:它会根据日期对象的时间(一天中的小时)给出不同的结果。因此,注意,我认为你不能使用Calendar/GregoriaCalendar类?因为问题被标记为“gwt”,我假设问题是关于客户端使用gwt api可以做些什么,gwt api不支持日历或Joda时间。因此,“2011年12月31日”和“2012年1月1日”之间的差异是1,“2011年1月1日”和“2012年12月31日”之间的差异也是1?这也许是必要的,但我对此表示怀疑。