如何在java中获得当前日期和其他日期(java.util.date)之间的差异(以年为单位)

如何在java中获得当前日期和其他日期(java.util.date)之间的差异(以年为单位),java,date,Java,Date,如何在java中获得当前日期和其他日期(java.util.date)之间的差异(以年为单位) 我有一个传入的java.util.Date对象,我需要得到它们之间的年数 我尝试了Joda的时间段,但我必须创建Joda的时间对象。是否有其他方法来计算此差异。获取毫秒并尝试将其转换为年的方法不包括闰年。由于日期类中的大多数方法都已弃用,您可以使用 Calendar firstCalendar=Calendar.getInstance(); firstCalendar.setTime(firstDat

如何在java中获得当前日期和其他日期(java.util.date)之间的差异(以年为单位)

我有一个传入的java.util.Date对象,我需要得到它们之间的年数


我尝试了Joda的时间段,但我必须创建Joda的时间对象。是否有其他方法来计算此差异。获取毫秒并尝试将其转换为年的方法不包括闰年。

由于
日期
类中的大多数方法都已弃用,您可以使用

Calendar firstCalendar=Calendar.getInstance();
firstCalendar.setTime(firstDate)//将时间设置为第一个java.util.Date
Calendar secondCalendar=Calendar.getInstance();
secondCalendar.setTime(secondDate)//将时间设置为第二个java.util.Date
int year=日历年;
int month=日历月份;
int difference=secondCalendar.get(year)-firstCalendar.get(year);
如果(差异>0&&
(secondCalendar.get(月)

通过
if
语句,我检查我们是否有2011年6月
和2012年3月
这样的日期(全年差异为0)。当然,我假设
secondDate
firstDate
之后,我建议使用joda

DateTime start = new DateTime(a);  
DateTime end = new DateTime(b); 
difference = Years.yearsBetween(start, end).getYears();
将对象转换为对象很简单,因为DateTime有一个构造函数:

 DateTime jodaTime = new DateTime(javaDate);
然后,您可以将这些数据传递给并对结果调用getYears(),以获取这两个日期之间的整年数:

 public int getYearDifference (Date begin, Date end) {
     return new Period(new DateTime(begin), new DateTime(end)).getYears();  
 }

从JDK 8开始,您可以获得两个日期之间的持续时间。更好的是,一些时间单位,如年,如你所要求的

Instant t1, t2;
...
long years = ChronoUnit.YEARS.between(t1, t2);
忘记日期、第三方罐子(Joda Time很酷,但让我们用标准的方式)和日历吧。JDK 8是未来

拥抱它!

您希望闰年的准确计数是多少?我的问题与scala无关,也与如何转换为Joda TimeUpdate无关,谢谢您的提示。:)
Instant t1, t2;
...
long years = ChronoUnit.YEARS.between(t1, t2);