2016-11-08 153 views
2

我知道這可能是一個非常愚蠢的問題,但我想知道是否有一種方法來減去另一個本地日期時間,或者如果沒有,將localDateTime轉換爲Date time和然後從那裏減去?Java從LocalDateTime欄減去LocalDateTime foo

我需要能夠制定出日期時間差,記錄foo的開始和記錄欄的開始(這也是富月底)

我是相當新的Java之間的,和爲了簡單起見,我希望能夠保持它大致相同的佈局,而不是必須從秒轉換等。

如果加入和減去LocalDateTime不是一個選項,我知道一旦我在dateTime I我能夠減去他們使用:

Period diff = new Period(start, end); 

由於數據的目的,我需要保留日期和時間才能使其工作,並且如前所述,我希望保持它相當簡單,因此不需要在秒之間轉換回日期。

我的問題實際上只是以一種可以接受的格式得到它,正如我所說的,我對Java和麪向對象的整體而言是新手,所以請不要嘲笑我這個看似簡單的問題。

感謝,

強尼

+1

已經回答已經在這裏http://stackoverflow.com/questions/25747499/java-8-calculate-difference-between-two-localdatetime – JynXXedRabbitFoot

+0

如果你的意思是這個問題是指Joda時間類,那麼你應該這樣說明確。此外,Joda-Time項目現在處於維護模式,並建議遷移到java.time類。 –

回答

3

你爲什麼不乾脆直接LocalDateTime使用的參數類型是這樣的:

LocalDateTime start = new LocalDateTime(2016, 10, 4, 17, 45); 
LocalDateTime end = LocalDateTime.now(); 
PeriodType ptype = PeriodType.yearMonthDayTime(); 
Period diff = new Period(start, end, ptype); 

見也是API of Joda-Time。你不需要投到DateTime

4

的問題是關於喬達時間,而不是關於Java 8問題是不是真的清楚。無論如何,這個答案是關於Java 8的,因此不直接回答這個問題。雖然我認爲如果有人想要使用Java 8,這是一個合適的答案。

您應該檢查java.time.Duration類。

LocalDateTime from = ... ; 
LocalDateTime to = ... ; 
Duration duration = Duration.between(from, to); 

如果你真的想獲得Period,它仍然是相當容易:

LocalDateTime from = ... ; 
LocalDateTime to = ... ; 
Period period = Period.between(from.toLocalDate(), to.toLocalDate()); 
+0

OP顯然使用Joda-Time,而不是Java-8-time-api,請參閱Period-constructor的使用.. –

+0

謝謝,但是它一直返回POD,這是由於相同的日期造成的,因爲這只是給LocalDate,而不是包含的時間? – Jonnyr612

+0

@ Jonnyr612與Joda-Time或其他API相比,Java-8(java.time-package)不會管理由日期和時間單位組成的持續時間。 –