2014-01-21 40 views
0

如何获得当前日期和其他日期(java.util.Date)之间的差异年的Java如何获得当前日期和其他日期(java.util.Date)之间的差异年的Java

我有传入的java.util.Date对象,我需要知道它们之间有多少年。

我试过乔达的时间段,但我必须创建乔达的时间对象。有没有其他方法来计算这种差异。获得毫米并试图将其转化为年的方式不计算闰年。

+1

你究竟如何计算闰年? – Philipp

+0

我的问题不涉及scala或如何转换为乔达时间 –

回答

7

由于Date类中的大多数方法都已弃用,因此可以使用java.util.Calendar

Calendar firstCalendar = Calendar.getInstance(); 
firstCalendar.setTime(firstDate); //set the time as the first java.util.Date 

Calendar secondCalendar = Calender.getInstance(); 
secondCalendar.setTime(secondDate); //set the time as the second java.util.Date 

int year = Calendar.YEAR; 
int month = Calendar.MONTH; 
int difference = secondCalendar.get(year) - firstCalendar.get(year); 
if (difference > 0 && 
    (secondCalendar.get(month) < firstCalendar.get(month))) { 
    difference--; 
} 

随着if声明我检查,如果我们有像日期和June, 2011March, 2012(为其全年的区别是0)。当然,我假设secondDatefirstDate

+1

更新,感谢您的注意。 :) –

1

我推荐使用joda。

DateTime start = new DateTime(a); 
DateTime end = new DateTime(b); 
difference = Years.yearsBetween(start, end).getYears(); 
0

转换一个java.util.Dateorg.joda.time.DateTime对象是微不足道的,因为日期时间有这样的构造:

DateTime jodaTime = new DateTime(javaDate); 

然后,您可以通过这些来org.joda.time.Period和调用的结果getYears()来获得这两个日期之间的全年数:

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

从JDK 8开始,您可以获得两个日期之间的持续时间。更好的是,一些ChronoUnits,就像你所要求的一样。

Instant t1, t2; 
... 
long years = ChronoUnit.YEARS.between(t1, t2); 

忘记日期,第三方罐子(乔达时间很酷,但让我们以标准方式来做)和日历。 JDK 8是未来。

拥抱它! http://docs.oracle.com/javase/tutorial/datetime/iso/period.html

相关问题