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.
dostał go: DateTime zerowy = new DateTime (0); long millis = period.toDurationFrom (zero) .getMillis(); – Droritos
@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
Testowałem to .. do tej pory wygląda dobrze. jednak będę czuwał. Dzięki ! ;) – Droritos