Top Level Namespace

Defined Under Namespace

Modules: TimeMath

Instance Method Summary collapse

Instance Method Details

#TimeMath(*arguments) ⇒ TimeMath::Op

This method helps to create time arithmetics sequence as a value object. Some examples:

# 10 am at first weekday? Easy!
TimeMath(Time.now).floor(:week).advance(:hour, 10).call
# => 2016-06-20 10:00:00 +0300

# For several time values? Nothing easier!
TimeMath(Time.local(2016,1,1), Time.local(2016,2,1), Time.local(2016,3,1)).floor(:week).advance(:hour, 10).call
# => [2015-12-28 10:00:00 +0200, 2016-02-01 10:00:00 +0200, 2016-02-29 10:00:00 +0200]

# Or, the most fun, you can create complicated operation and call it
# later:
op = TimeMath().floor(:week).advance(:hour, 10)
# => #<TimeMath::Op floor(:week).advance(:hour, 10)>
op.call(Time.now)
# => 2016-06-20 10:00:00 +0300

# or even as a lambda:
times = [Time.local(2016,1,1), Time.local(2016,2,1), Time.local(2016,3,1)]
times.map(&op)
# => [2015-12-28 10:00:00 +0200, 2016-02-01 10:00:00 +0200, 2016-02-29 10:00:00 +0200]

See also TimeMath::Op for list of operations available, but basically they are all same you can call on TimeMath::Units::Base, just pass unit symbol as a first argument.

Parameters:

  • arguments

    time-y value, or list of them, or nothing

Returns:



135
136
137
# File 'lib/time_math.rb', line 135

def TimeMath(*arguments) # rubocop:disable Naming/MethodName
  TimeMath::Op.new(*arguments)
end