2013-02-04 9 views
8

Mam zdefiniowany format okresu Joda zdefiniowany poniżej. Chciałbym pokazać tylko dwie najbardziej znaczące jednostki.Formater czasu, aby wyświetlić dwie najbardziej znaczące jednostki (np. "Lata, miesiąc" za długi okres, "godziny, minuty" za krótki?)

Tak więc przez długi czas może powodować "x lat, y miesięcy". Przez krótki okres "x godzin, y minut".

Jaki jest najlepszy sposób osiągnięcia tego przy pomocy Jody?

val periodFormatter: PeriodFormatter = new PeriodFormatterBuilder() 
    .printZeroNever().appendYears().appendSuffix(" year", " years") 
    .appendSeparator(", ") 
    .printZeroNever().appendMonths().appendSuffix(" month", " months") 
    .appendSeparator(", ") 
    .printZeroNever().appendDays().appendSuffix(" day", " days") 
    .appendSeparator(", ") 
    .printZeroNever().appendHours().appendSuffix(" hr", " hrs") 
    .appendSeparator(", ") 
    .printZeroRarelyLast().appendMinutes().appendSuffix(" min", " mins") 
    .toFormatter(); 
+0

Podobne pytanie: [JodaTime PeriodFormat, czas, który upłynął z tylko jednym polem] (http://stackoverflow.com/questions/10140141/jaktime-periodformat-elapsed-time-with-only-1-field). – sleske

Odpowiedz

0

Metoda minimumPrintedDigits dotyczy "następnego i następnych dołączonych pól". Ponieważ używasz printZeroNever, sugerowałbym wprowadzenie metody minimumPrintedDigits PRZED użyciem metod dołączania. Edycja: lepiej by było, używając tylko printZeroNever.

+0

Dzięki, zaktualizowałem swój przykład. Jakieś pomysły, jak pokazać tylko dwie najbardziej znaczące jednostki? –

+0

Ponieważ widoczne będą tylko jednostki z wartościami innymi niż null, dwie wyświetlone jednostki powinny automatycznie być najbardziej znaczące. Ale to zależy od tego, jakiego wyniku chcesz: wyobraź sobie, że mamy 0 lat 3 miesiące 0 dni 5 godzin. Czy chcesz wyświetlić "3 miesiące 0 dni", czy raczej "3 miesiące 5 godzin"? – Lupuss

+0

Popraw mnie, jeśli się mylę, ale nie sądzę, że minimumPrintedDigits faktycznie robi to, co muszę zrobić? Jeśli mam 3 mon 0 dni 5 godzin, myślę, że najlepiej byłoby "3 mon 5 godzin". Jeśli mam 3 mon 3 dni 5 godzin, chciałbym "3 mon 3 dni" (czyli obcięcie 5 godzin, ponieważ chcę tylko dwóch najbardziej znaczących jednostek). –

Powiązane problemy