如何獲得當前日期和其他日期(java.util.Date)之間的差異年的Java如何獲得當前日期和其他日期(java.util.Date)之間的差異年的Java
我有傳入的java.util.Date對象,我需要知道它們之間有多少年。
我試過喬達的時間段,但我必須創建喬達的時間對象。有沒有其他方法來計算這種差異。獲得毫米並試圖將其轉化爲年的方式不計算閏年。
如何獲得當前日期和其他日期(java.util.Date)之間的差異年的Java如何獲得當前日期和其他日期(java.util.Date)之間的差異年的Java
我有傳入的java.util.Date對象,我需要知道它們之間有多少年。
我試過喬達的時間段,但我必須創建喬達的時間對象。有沒有其他方法來計算這種差異。獲得毫米並試圖將其轉化爲年的方式不計算閏年。
由於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, 2011
March, 2012
(爲其全年的區別是0)。當然,我假設secondDate
是後firstDate
。
更新,感謝您的注意。 :) –
我推薦使用joda。
DateTime start = new DateTime(a);
DateTime end = new DateTime(b);
difference = Years.yearsBetween(start, end).getYears();
轉換一個java.util.Date到org.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();
}
從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
你究竟如何計算閏年? – Philipp
我的問題不涉及scala或如何轉換爲喬達時間 –