2013-02-28 5 views
39

Załóżmy, że istnieją dwie daty A (godzina rozpoczęcia) & B (godzina zakończenia). A & B może być czasem w tym samym dniu lub nawet innym dniu. Moim zadaniem jest pokazać różnicę w sekundach. Format daty, które używam jestróżnica w sekundach między dwiema datami za pomocą czasu joda?

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

Na przykład

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

Pomoc jest doceniana.

Odpowiedz

102

Użyj klasę Seconds:

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

ten kawałek kodu drukuje się 600. Myślę, że to, co trzeba.

Jako dodatkową poradę przejrzyj dokumentację joda-time. Jest całkiem niezły i większość rzeczy jest bardzo łatwa do odkrycia.

W przypadku, gdy potrzebujesz pomocy w przetwarzaniu terminach (jest w docs, naprawdę), sprawdź związane z nim pytania, na przykład:

Parsing date with Joda with time zone

+0

thanx pcalcao .. to działało !! :-) –

+10

Jeśli szukasz różnicy (jako liczby dodatniej), upewnij się, że przyjmujesz bezwzględną wartość 'secondsBetween', w przeciwnym razie możesz uzyskać ujemną liczbę, jeśli argumenty są odwrócone (np. Jeśli wywołasz' Seconds .secondsBetween (dateTime, teraz) '. – user1366367

4

Odpowiedź @pcalcao będzie najlepszy w większości przypadków. Pamiętaj, że sekundy będą zaokrąglane do liczby całkowitej.

Jeśli jesteś zainteresowany podrzędnych sekund dokładność prostu odjąć milisekundy:

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