2011-01-06 3 views
11

Mam pole w formularzu określające czas trwania wydarzenia. Powiedzmy, że wydarzenie potrwa 15 minut. Tak więc pole będzie mieć następującą wartość: 00:15 Jeśli to ma trwać 1 godzina: 01:00, itdJak przekonwertować ciąg HH: MM na czas trwania Jody?

Jak mogę utworzyć Joda-TimeDuration obiekt z napisu „HH: MM”?

Patrząc na stronę główną Joda-Time, wspomina się, że możliwe jest stworzenie obiektu Duration z określonego obiektu przy użyciu odpowiednio ConverterManager i DurationConverter.

Moje pytanie brzmi: w jaki sposób mogę zaimplementować powyższe interfejsy, aby utworzyć obiekt Duration, przekazując parametr "4:30"?

Dzięki z góry,

Lucas

Odpowiedz

16

Myślę, że lepszym sposobem byłoby wykorzystanie PeriodFormatterBuilder tak:

PeriodFormatter hoursMinutes= new PeriodFormatterBuilder() 
    .appendHours() 
    .appendSeparator(":") 
    .appendMinutes() 
    .toFormatter(); 

Następnie można analizować swoje struny do Period obiektów i wywołać toStandardDuration() na te - lub kontynuuj pracę z Period, ponieważ wydaje się, że lepiej pasuje do twojego przypadku użycia.

+0

Dzięki za odpowiedź. jak nazwałbym to przejściem parametrów: HH: mm? –

+1

@Lucas: nie zrobiłbyś tego. Interfejs API jest oparty na wzorze projektu budowniczego, a nie na łańcuchu wzorca. Kod I stanowi odpowiednik łańcucha wzorca HH: mm. –

+2

Po sformatowaniu wywołujesz formatter.parsePeriod ("00:15"), aby uzyskać obiekt okresu - http://joda-time.sourceforge.net/api-release/org/joda/time/format/PeriodFormatter .html – JodaStephen