JAVA 小时到持续时间

Dop*_*Dod 2 java time duration

我有一个应用程序,我需要检查,如果旅行是在4小时内和30小时的持续时间,我把它存储为一个字符串“04:00”“30:00”,然后我尝试使用解析它LocalTime.parse()“04: 00"已成功解析,但"30:00"因格式无效而出错,从字符串解析持续时间的最佳方法是什么?

Sli*_*mer 6

首先,您以某种方式存储它是错误的。我建议以Duration.parse标准ISO 8601格式存储它可以处理它。

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"
Run Code Online (Sandbox Code Playgroud)

那么你可以这样做:

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
Run Code Online (Sandbox Code Playgroud)