code: def iso8601_duration_to_seconds(input)
        return nil if input.nil? || input.empty?
        match_data = DURATION_RE.match(input)
        raise(StringFormatException, "Invalid duration given") if match_data.nil?
        duration = 0
        duration += match_data[:weeks].to_i   * 604800
        duration += match_data[:days].to_i    * 86400
        duration += match_data[:hours].to_i   * 3600
        duration += match_data[:minutes].to_i * 60
        duration += match_data[:seconds].to_i
      end
docs: Convert an ISO8601 Duration format to seconds
   @see http://tools.ietf.org/html/rfc2445#section-4.3.6
   @param [String] input
   @return [nil,Fixnum] the number of seconds in this duration
     nil if there is no known duration