Module: Quant::TimeMethods

Included in:
Quant::Ticks::OHLC, Quant::Ticks::Spot
Defined in:
lib/quant/time_methods.rb

Constant Summary collapse

EPOCH_DATE =

Provides lower-bounds for dates and times. See Quant::TimePeriod for example use-case.

Date.civil(1492, 10, 12).freeze
EPOCH_TIME =
Time.new(EPOCH_DATE.year, EPOCH_DATE.month, EPOCH_DATE.day, 0, 0, 0, "+00:00").utc.freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.epoch_dateObject

The epoch date is a NULL object Date for the library. It is used to represent the beginning of time. That is, a date that is without bound and helps avoid nil checks, NULL database entries, and such when working with dates.



26
27
28
# File 'lib/quant/time_methods.rb', line 26

def self.epoch_date
  EPOCH_DATE
end

.epoch_timeObject

The epoch time is a NULL object Time for the library. It is used to represent the beginning of time. That is, a time that is without bound and helps avoid nil checks, NULL database entries, and such when working with time.



33
34
35
# File 'lib/quant/time_methods.rb', line 33

def self.epoch_time
  EPOCH_TIME
end

Instance Method Details

#extract_time(value) ⇒ Object

When streaming or extracting a time entry from a payload, Time can already be parsed into a Time object. Or it may be an Integer representing the number of seconds since the epoch. Or it may be a String that can be parsed into a Time object. This method normalizes the time into a Time object on the UTC timezone.



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/quant/time_methods.rb', line 40

def extract_time(value)
  case value
  when Time
    value.utc
  when DateTime
    Time.new(value.year, value.month, value.day, value.hour, value.minute, value.second).utc
  when Date
    Time.utc(value.year, value.month, value.day, 0, 0, 0)
  when Integer
    Time.at(value).utc
  when String
    Time.parse(value).utc
  else
    raise ArgumentError, "Invalid time: #{value.inspect}"
  end
end