Class: Time

Inherits:
Object
  • Object
show all
Defined in:
lib/mongoid/tracking/core_ext/time.rb

Constant Summary collapse

ONEHOUR =

Functions to construct the MongoDB field key for trackers

to_i_timestamp returns the computed UTC timestamp regardless of the timezone.

Examples:

2011-01-01 00:00:00 UTC  ===> 14975
2011-01-01 23:59:59 UTC  ===> 14975
2011-01-02 00:00:00 UTC  ===> 14976

to_i_hour returns the hour for the date, again regardless of TZ

2011-01-01 00:00:00 UTC  ===> 0
2011-01-01 23:59:59 UTC  ===> 23
60 * 60
ONEDAY =
24 * ONEHOUR

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.from_key(ts, h) ⇒ Object



43
44
45
# File 'lib/mongoid/tracking/core_ext/time.rb', line 43

def self.from_key(ts, h)
  Time.at(ts.to_i * ONEDAY + h.to_i * ONEHOUR)
end

Instance Method Details

#to_i_hourObject



30
31
32
# File 'lib/mongoid/tracking/core_ext/time.rb', line 30

def to_i_hour
  self.dup.utc.hour
end

#to_i_timestampObject



21
22
23
24
# File 'lib/mongoid/tracking/core_ext/time.rb', line 21

def to_i_timestamp
  #Adding a fix for case where the 'quo' is being used instead of Fixnum's '/' operator
  (self.dup.utc.to_i / ONEDAY).to_i
end

#to_keyObject

Returns an integer to use as MongoDB key



39
40
41
# File 'lib/mongoid/tracking/core_ext/time.rb', line 39

def to_key
  "#{to_i_timestamp}.#{to_i_hour}"
end

#to_key_hourObject



34
35
36
# File 'lib/mongoid/tracking/core_ext/time.rb', line 34

def to_key_hour
  to_i_hour.to_s
end

#to_key_timestampObject



26
27
28
# File 'lib/mongoid/tracking/core_ext/time.rb', line 26

def to_key_timestamp
  to_i_timestamp.to_s
end

#whole_dayObject

Returns a range to be enumerated using hours for the whole day



48
49
50
51
# File 'lib/mongoid/tracking/core_ext/time.rb', line 48

def whole_day
  midnight = utc? ? Time.utc(year, month, day) : Time.new(year, month, day, 0, 0, 0, utc_offset)
  midnight...(midnight + ::Range::DAYS)
end