2016-11-28 5 views
1

Ich habe eine app, wo ich brauche, um zu überprüfen, ob Reisen in Dauer zwischen 4 Stunden und 30 Stunden, speichere ich es als Strings „04.00“ und „30:00“, dann versuche ich es zu analysieren mit LocalTime.parse(), "04:00" wird erfolgreich geparst, aber "30:00" bekommt einen Fehler für ungültiges Format, was könnte der beste Weg sein, Dauer Stunden von einer Zeichenfolge analysieren?JAVA Stunden auf Dauer

+1

Was bedeutet ' "30:00"' bedeuten? Ist das nur absolute Dauer? – Taylor

+0

http://stackoverflow.com/questions/6403851/parsing-time-strings-like-1h-30min hilft das? – Taylor

+1

... Scheint trivial; Teilen Sie das ":" und vergleichen Sie die Zahlen. –

Antwort

3

Zunächst speichern Sie es irgendwie falsch. Ich schlage vor, es in der Weise zu speichern Duration.parse kann es handhaben, im Standard ISO 8601 Format.

Examples: 

    "PT20.345S" -- parses as "20.345 seconds" 
    "PT15M"  -- parses as "15 minutes" (where a minute is 60 seconds) 
    "PT10H"  -- parses as "10 hours" (where an hour is 3600 seconds) 
    "P2D"  -- parses as "2 days" (where a day is 24 hours or 86400 seconds) 
    "P2DT3H4M" -- parses as "2 days, 3 hours and 4 minutes" 
    "P-6H3M" -- parses as "-6 hours and +3 minutes" 
    "-P6H3M" -- parses as "-6 hours and -3 minutes" 
    "-P-6H+3M" -- parses as "+6 hours and -3 minutes" 

So können Sie gerade tun:

Duration dur30H = Duration.parse("PT30H"); // 30h 
Duration dur4H = Duration.parse("PT4H"); // 4h 
Duration travelTime = Duration.parse("P1D"); // 1D 
boolean result = travelTime.compareTo(dur30H) <= 0 && travelTime.compareTo(dur4H) >= 0; // true