2013-02-28 9 views
39

Angenommen, es gibt zwei Daten A (Startzeit) & B (Endzeit). A & B könnte die Zeit am selben Tag oder sogar anderen Tag sein. Meine Aufgabe ist es, Unterschiede in Sekunden zu zeigen. Das Datumsformat, das ich verwende, istUnterschied in Sekunden zwischen zwei Daten mit Joda Zeit?

Für z.B.

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

Hilfe ist willkommen.

Antwort

102

die Seconds Klasse verwenden:

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

Dieses Stück Code druckt 600. Ich denke, das ist das, was Sie brauchen.

Als weitere Beratung, erkunden Sie die Dokumentation von joda-time. Es ist ziemlich gut und die meisten Dinge sind sehr leicht zu entdecken.

Im Fall, dass Sie etwas Hilfe bei der Analyse der Daten (es ist in der Dokumentation, wirklich), die damit verbundenen Fragen überprüfen, wie folgt aus:

Parsing date with Joda with time zone

+0

thanx pcalcao .. es hat funktioniert !! :-) –

+10

Wenn Sie nach der Differenz (als positive Zahl) suchen, achten Sie darauf, den absoluten Wert von 'secondsBetween' zu verwenden, sonst könnten Sie eine negative Zahl erhalten, wenn die Argumente umgekehrt sind (zB wenn Sie' Seconds .secondsBetween (dateTime, now) '. – user1366367

4

Die Antwort von @pcalcao wird am besten in den meisten Fällen. Beachten Sie, dass Sekunden zu einer Ganzzahl gerundet werden.

Wenn Sie Interesse an Unter Sekunden sind Genauigkeit subtrahieren nur die Millisekunden:

double seconds = (now.getMillis() - dateTime.getMillis())/1000d; 
Verwandte Themen