如何获取两个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?这也许是必要的,但我对此表示怀疑。