Mam okres JodaTime, który utworzyłem z dwóch wystąpień DateTime. Czy istnieje dobry sposób na konwersję tego okresu na dziesiętną liczbę godzin?Dowolny sposób na konwersję okresu JodaTime na dziesiętną liczbę godzin?
Na przykład, mam okres, który trwa od 13:00 do 1:30 po południu 1 stycznia 2010. Jak mogę uzyskać ten okres jako 1,5 godziny.
W przeszłości Mam ręcznie przeliczane sekund i BigDecimals takie jak to:
int seconds = myPeriod.toStandardSeconds().getSeconds();
BigDecimal d = new BigDecimal((double) seconds/3600);
// Round to two decimals
BigDecimal correctResult = d.setScale(2, RoundingMode.HALF_DOWN);
Ten rodzaj Odczuwalna hack, nie wspominając o niewygodne kiedy rozpocząć dodawanie Okresy razem. Wygląda na to, że powinien istnieć lepszy sposób.
Wszelkie pomysły? Dzięki
Powinieneś unikać "podwójnego". Twoje ogólne podejście jest słuszne, po prostu otrzymuj sekundy w BigDecimal jako pierwsze, a następnie podziel je przez BigDecimal.valueOf (3600) zamiast przechodzenia przez podwójną obsadę. W tym przypadku może to nie zrobić dużej różnicy, ale jest dobrą praktyką. –