2014-01-21 93 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

相關問題