private static int findUnitOffset(String time) {
        int unitOffset = 0;
        while (unitOffset < time.length()) {
            char c = time.charAt(unitOffset);
            if (c == '.' || (c >= '0' && c <= '9')) {
                unitOffset += 1;
            } else {
                break;
            }
        }
        if (unitOffset == 0) {
            throw new IllegalInputException("Invalid number '" + time + "'");
        }
        return unitOffset;
    }
Tries to return the given object as a Long. If it is a Number, treat it
as a number of seconds, i.e. get a Long representation and multiply by
1000. If it has a String representation, try to parse this as a floating
point number, followed by by an optional unit (seconds and an SI prefix,
a couple of valid examples are "s" and "ms". Only a very small subset of
SI prefixes are supported). If no unit is given, seconds are assumed.

@param value some representation of a number of seconds
@param defaultValue returned if value is null
@return value as a number of milliseconds
@throws NumberFormatException if value is not a Number instance and its String
        representation cannot be parsed as a number followed optionally by time unit
container-search/src/main/java/com/yahoo/search/query/ParameterParser.java