2011-11-22 24 views
0

我正在做一個簡單的計算來得到兩個日期之間的差異。如果我使用的是Date類,我可以這樣做:在joda.time.LocalDate中,getTime()是Date中的方法的等價物是什麼?

Date d1 = new GregorianCalendar(2000, 11, 31, 23, 59).getTime(); 

    /** Today's date */ 
    Date today = new Date(); 

    // Get msec from each, and subtract. 
    long diff = today.getTime() - d1.getTime(); 

    System.out.println("The 21st century (up to " + today + ") is " 
     + (diff/(1000 * 60 * 60 * 24)) + " days old."); 
    } 

但我無法找到當地的日期一樣的getTime()的方法。有什麼辦法可以輕鬆獲得我想要實現的目標嗎?

我甚至想我的對象LOCALDATE更改爲臨時約會對象是這樣的:

LocalDate date=new LocalDate(); 
    Date d=date.toDate(); 

但方法TODATE()心不是工作。即它說它是不被認可的方法(所以編譯時間錯誤),但從我所看到的是在文檔

謝謝你的時間,當然感恩節快樂。

+0

'getLocalMillis()'? – leonardoborges

+0

我試過那個,方法是受保護的 – WowBow

+0

'LocalDate'只能保存日期 - 年,月,日。如果您需要本地日期和時間,請改爲使用LocalDateTime。 – Jesper

回答

1

Days.daysBetween()就是答案。

LocalDate now = new LocalDate(); 
LocalDate past = now.minusDays(300); 
int days = Days.daysBetween(past,now).getDays(); 

決不一個LOCALDATE的轉換爲一個Java日期(二completey不同的野獸),如果你只是處理日期。 Jodatime Localdate是一個真正的「日曆日期」,即{日,月,年}(連同公曆日曆規範)的元組,並且與「物理時間」無關,包括秒,小時等。如果你需要做日期算術,堅持使用Localdate,並且你永遠不需要擔心如果使用Java日期對算術進行日期計算時可能出現的愚蠢錯誤(時區,DST等)。

+0

我可以說最簡單的。謝啦。 – WowBow

0

我測試此示例代碼,找出在天的差別,你可以找到的差異爲每您的需求。

請參閱http://joda-time.sourceforge.net/key_period.html

LocalDate currentDate = new LocalDate(); 

    LocalDate previousDate = currentDate.minusDays(1); 
    System.out.println(currentDate); 
    System.out.println(previousDate); 

    Period periodDifference = new Period(currentDate, previousDate, PeriodType.days()); 
    System.out.println(periodDifference); 
0
private long diff(Calendar c1, Calendar c2) { 
    long d1 = c1.getTimeInMillis(); 
    long d2 = c2.getTimeInMillis(); 
    return ((d2 - d1)/(60*60*24*1000)); 
} 
+0

我沒有使用日曆。 – WowBow

+0

日期不具備該功能 - 很容易。將其轉換爲另一種格式是您的最佳選擇。 Jesper有另一個很好的答案。 – awm

相關問題