class Timezonify::Timezone
Public Class Methods
find_country_in_timezone(timezone)
click to toggle source
# File lib/timezonify.rb, line 26 def self.find_country_in_timezone(timezone) Mapping.timezone_country["#{timezone.gsub('+0','+').gsub(':00','')}"] end
find_time_at(timezone)
click to toggle source
# File lib/timezonify.rb, line 15 def self.find_time_at(timezone) return (ActiveSupport::TimeZone[0].now) unless timezone.include?(":") operation = timezone.split("GMT").last[0] hours_n_minutes = timezone.gsub("+","").gsub("-","").split("GMT").last.split(":") hours_to_seconds = hours_n_minutes.first.to_i * 60 * 60 minutes_to_seconds = hours_n_minutes.last.to_i * 60 total_seconds_diff = hours_to_seconds + minutes_to_seconds total_seconds_diff = -(total_seconds_diff) unless(operation == "+") ActiveSupport::TimeZone[total_seconds_diff].now end
local_zone()
click to toggle source
# File lib/timezonify.rb, line 30 def self.local_zone timezone_for_time(Time.now) end
timezone_for_time(time='Time.now.utc')
click to toggle source
# File lib/timezonify.rb, line 34 def self.timezone_for_time(time='Time.now.utc') offset = find_offset_for_required_time(time.to_s, current_time="#{Time.now.utc.strftime("%I:%M %p UTC")}") ((offset < 0) ? formatted_negative_offset(offset) : formatted_positive_offset(offset)) end
Private Class Methods
find_offset_for_required_time(required_time='8:00 AM UTC', current_time="
click to toggle source
# File lib/timezonify.rb, line 41 def self.find_offset_for_required_time(required_time='8:00 AM UTC', current_time="#{Time.now.utc.strftime("%I:%M %p UTC")}") current_time_in_hours = TimeHelper.time_in_hours(Time.parse(required_time)) required_time_in_hours = TimeHelper.time_in_hours(Time.parse(current_time)) (current_time < required_time) ? offset_calculator(required_time_in_hours,current_time_in_hours) : offset_calculator(current_time_in_hours,required_time_in_hours) end
formatted_negative_offset(negative_offset_in_hours)
click to toggle source
# File lib/timezonify.rb, line 58 def self.formatted_negative_offset(negative_offset_in_hours) offset_in_hours = negative_offset_in_hours.to_s.split('-').last.to_f offset_hours = hour_from_offset(offset_in_hours) offset_minutes = minutes_from_offset(offset_in_hours) timezone_as_string(offset_hours, offset_minutes, '-') end
formatted_positive_offset(offset_in_hours)
click to toggle source
# File lib/timezonify.rb, line 51 def self.formatted_positive_offset(offset_in_hours) return 'GMT' if (offset_in_hours == 0) offset_hours = hour_from_offset(offset_in_hours) offset_minutes = minutes_from_offset(offset_in_hours) timezone_as_string(offset_hours, offset_minutes, '+') end
hour_from_offset(offset_in_hours)
click to toggle source
# File lib/timezonify.rb, line 65 def self.hour_from_offset(offset_in_hours) offset_in_hours.to_s.split('.').first.to_i end
minutes_from_offset(offset_in_hours)
click to toggle source
# File lib/timezonify.rb, line 69 def self.minutes_from_offset(offset_in_hours) offset_in_hours.to_s.split('.').last.to_i end
offset_calculator(time1,time2)
click to toggle source
# File lib/timezonify.rb, line 47 def self.offset_calculator(time1,time2) -(time1 - time2) end
timezone_as_string(offset_hours, offset_minutes, state)
click to toggle source
# File lib/timezonify.rb, line 73 def self.timezone_as_string(offset_hours, offset_minutes, state) if offset_minutes > 0 if offset_hours < 10 "GMT#{state}0" + "#{offset_hours}" + ":30" else "GMT#{state}" + "#{offset_hours}" + ":30" end else if offset_hours < 10 "GMT#{state}0" + "#{offset_hours}" else "GMT#{state}" + "#{offset_hours}" end end end