module Rex::ExtTime

Extended time related functions.

Public Class Methods

sec_to_s(seconds) click to toggle source

Convert seconds to a string that is broken down into years, days, hours, minutes, and second.

# File lib/rex/time.rb, line 14
def self.sec_to_s(seconds)
  parts = [ 31536000, 86400, 3600, 60, 1 ].map { |d|
    if ((c = seconds / d) > 0)
      seconds -= c.truncate * d
      c.truncate
    else
      0
    end
  }.reverse

  str = ''

  [ "sec", "min", "hour", "day", "year" ].each_with_index { |name, idx|
    next if (!parts[idx] or parts[idx] == 0)

    str = "#{parts[idx]} #{name + ((parts[idx] != 1) ? 's' :'')} " + str
  }

  str.empty? ? "0 secs" : str.strip
end
str_to_sec(str) click to toggle source

Converts a string in the form n years g days x hours y mins z secs.

# File lib/rex/time.rb, line 38
def self.str_to_sec(str)
  fields = str.split(/ /)
  secs   = 0

  fields.each_with_index { |f, idx|
    val = 0
    case f
      when /^year/
        val = 31536000
      when /^day/
        val = 86400
      when /^hour/
        val = 3600
      when /^min/
        val = 60
      when /^sec/
        val = 1
    end

    secs += val * fields[idx-1].to_i
  }

  secs
end