Class: ZoneRanger::Util

Inherits:
Object
  • Object
show all
Defined in:
lib/zone_ranger/util.rb

Class Method Summary collapse

Class Method Details

.calculate_duration_in_minutes(starting, ending) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/zone_ranger/util.rb', line 32

def self.calculate_duration_in_minutes starting, ending
  start_hour = starting.strftime("%H")
  start_minutes = starting.strftime("%M")
  start_in_minutes = (start_hour.to_i * 60) + start_minutes.to_i

  finish_hour = ending.strftime("%H").to_i
  finish_minutes = (finish_hour * 60) + ending.strftime("%M").to_i

  d = finish_minutes - start_in_minutes
  d += 1440 if d < 0

  d
end

.crosses_one_utc_midnight?(start, duration) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
24
25
26
# File 'lib/zone_ranger/util.rb', line 21

def self.crosses_one_utc_midnight? start, duration
  # a utc midnight is when the start day is different the blackout ends on
  day1 = start.utc.to_date
  day2 = (start + duration.minutes).utc.to_date
  day1 != day2
end

.wday_match?(date1, date2) ⇒ Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/zone_ranger/util.rb', line 28

def self.wday_match? date1, date2
  date1.wday == date2.wday
end

.week_of_month(time) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/zone_ranger/util.rb', line 4

def self.week_of_month time
  day_num = time.day
  days_in_month = Time.days_in_month(time.month)
  
  if day_num < 8
    1
  elsif day_num < 15
    2
  elsif day_num < 22
    3
  elsif day_num < days_in_month - 7
    4 # fourth but not last
  else
    :last # last
  end
end