2013-02-28 23 views
39

Supponiamo che ci siano due date A (ora di inizio) & B (ora di fine). A & B potrebbe essere l'ora dello stesso giorno o anche di un giorno diverso. Il mio compito è mostrare la differenza in secondi. Il formato della data che sto usando èdifferenza in secondi tra due date usando joda time?

Date Format :: "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 

Ad es.

start date :: "2011-11-16T14:09:23.000+00:00" 
end date ::  "2011-11-17T05:09:23.000+00:00"    

L'aiuto è apprezzato.

risposta

102

utilizzare la classe Seconds:

DateTime now = DateTime.now(); 
DateTime dateTime = now.plusMinutes(10); 
Seconds seconds = Seconds.secondsBetween(now, dateTime); 
System.out.println(seconds.getSeconds()); 

Questo pezzo di stampe di codice fuori 600. Penso che questo sia quello che ti serve.

Come ulteriore consiglio, consultare la documentazione di joda-time. È abbastanza buono, e molte cose sono molto facili da scoprire.

Nel caso in cui hai bisogno di aiuto con l'analisi di date (E 'nella documentazione, in realtà), controllare le questioni connesse, in questo modo:

Parsing date with Joda with time zone

+0

thanx pcalcao .. ha funzionato !! :-) –

+10

Se stai cercando la differenza (come numero positivo) assicurati di prendere il valore assoluto di 'secondsBetween', altrimenti potresti ottenere un numero negativo se gli argomenti sono invertiti (ad es. Se chiami' Seconds .secondsBetween (dateTime, now) '. – user1366367

4

La risposta di @pcalcao sarà migliore nella maggior parte dei casi. Tieni presente che i secondi verranno arrotondati a un numero intero.

Se siete interessati in sotto-secondi precisione solo sottrarre i millisecondi:

double seconds = (now.getMillis() - dateTime.getMillis())/1000d; 
Problemi correlati