2012-03-08 8 views
20

Próbuję uzyskać całkowitą ilość milisekund (nie pole millis) z instancji obiektu Period. Próbowałem już wielu konwersji, ponieważ nie mogłem znaleźć żadnej łatwej do nadania metody.czas Joda, w okresie do całkowitego Millis

Czy ktoś kiedykolwiek potrzebował tego i udało się go odzyskać?

(muszę to dla mojej poprawki, aby dowiedzieć się okres negatywne;. Ujemny millis = okres ujemna)

Odpowiedz

14

Nie można uzyskać millis bezpośrednio z Period, ponieważ pola jak miesiącach i latach są zmienne w zakresie milisekund.

Aby to zadziałało, musisz podać "punkt odniesienia", z którego Period może obliczyć rzeczywisty czas trwania milisekundy.

Na przykład metody Period.toDurationFrom i Period.toDurationTo przyjmują taki moment bazowy i obliczają obiekt Duration, który następnie można uzyskać.

Javadoc dla toDurationFrom mówi:

Pobiera łączny czas trwania milisekundę Ten okres w stosunku do chwili startu. Ta metoda dodaje okres do podanej chwili, aby obliczyć czas trwania.

Natychmiastowe podanie należy podać w zależności od długości okresu. Na przykład okres 1 miesiąca może wynosić od ekwiwalentu 28 do 31 dni w milisekundach ze względu na różną długość miesięcy. Podobnie, dzień może się zmieniać przy zmianie czasu na zmianę czasu, zwykle pomiędzy 23 a 25 godzin.

Musisz więc wybrać odpowiedni moment bazowy dla swojej aplikacji.

+0

dostał go: DateTime zerowy = new DateTime (0); long millis = period.toDurationFrom (zero) .getMillis(); – Droritos

+0

@DrorWeiss: To będzie działać tylko przez stosunkowo małe okresy. Jeśli zaczniesz używać okresów dłuższych niż miesiąc, może to spowodować zniekształcony wynik. – skaffman

+0

Testowałem to .. do tej pory wygląda dobrze. jednak będę czuwał. Dzięki ! ;) – Droritos

2

Jeśli chcesz uzyskać millis od czasu określonego, można to zrobić za pomocą metod plus() lub minus() klasy DateTime.

np. coraz millis z teraz

DateTime start = new DateTime(); //NOW 
DateTime end = start.plus(<your period>); 
long millis = end.getMillis() - start.getMillis(); 
Powiązane problemy