Class: TZDetect::TimeZone
- Inherits:
-
Object
- Object
- TZDetect::TimeZone
- Defined in:
- lib/tzdetect/zone.rb
Instance Attribute Summary collapse
-
#city ⇒ Object
readonly
Returns the value of attribute city.
-
#country_code ⇒ Object
readonly
Returns the value of attribute country_code.
-
#latitude ⇒ Object
readonly
Returns the value of attribute latitude.
-
#longitude ⇒ Object
readonly
Returns the value of attribute longitude.
-
#region ⇒ Object
readonly
Returns the value of attribute region.
-
#timezone ⇒ Object
readonly
Returns the value of attribute timezone.
Class Method Summary collapse
-
.by_location(latitude, longitude) ⇒ Object
Detect timezone by latitude and longitude Returns TZInfo object, if can’t find timezone returns nil.
-
.by_location!(latitude, longitude) ⇒ Object
Detect timezone by latitude and longitude Returns TZInfo raise errors.
-
.countries_with_many_tz ⇒ Object
Returns countries codes for countries with more then one timezone.
-
.get(country_code, city, region = "", latitude = nil, longitude = nil) ⇒ Object
Detect timezone by country code city region and position data Returns TZInfo object and raise errors.
-
.get!(country_code, city, region = "", latitude = nil, longitude = nil) ⇒ Object
Detect timezone by country code city region and position data Returns TZInfo object and raise errors.
-
.get_location!(country_code, city, region = nil) ⇒ Object
Detect timezone by latitude and longitude Returns TZInfo object, if can’t find timezone returns nil.
Instance Method Summary collapse
-
#initialize(country_code, city, region = nil, latitude = nil, longitude = nil) ⇒ TimeZone
constructor
Constructor .
Constructor Details
#initialize(country_code, city, region = nil, latitude = nil, longitude = nil) ⇒ TimeZone
Constructor
-
country_code - two character ISO 3166-1 alpha 2 code en.wikipedia.org/wiki/ISO_3166-1_alpha-2
-
city
-
region - use region
-
latitude
-
longitude
Example
Country with many timezones without position data. System will find location for Miami and then find timezone
tz = TimeZone.new("US", "Miami", "Florida")
tz.timezone.name # "America/New_York"
tz.latitude # 25.774265
tz.longitude # -80.193658
Country with many timezones with position data. System will directly find timezone with position data
tz = TimeZone.new("US", "Miami", "Florida", 25.774265, -80.193658)
tz.timezone.name # "America/New_York"
Country with one timezone will not return location data
tz = TimeZone.new("RS", "Novi Sad")
tz.timezone.name # "Europe/Belgrade"
tz.latitude # nil
tz.longitude # nil
46 47 48 49 50 51 52 53 |
# File 'lib/tzdetect/zone.rb', line 46 def initialize country_code, city, region=nil, latitude=nil, longitude=nil @country_code = country_code.upcase @city = city @region = region @latitude = latitude @longitude = longitude timezone! end |
Instance Attribute Details
#city ⇒ Object (readonly)
Returns the value of attribute city.
13 14 15 |
# File 'lib/tzdetect/zone.rb', line 13 def city @city end |
#country_code ⇒ Object (readonly)
Returns the value of attribute country_code.
13 14 15 |
# File 'lib/tzdetect/zone.rb', line 13 def country_code @country_code end |
#latitude ⇒ Object (readonly)
Returns the value of attribute latitude.
13 14 15 |
# File 'lib/tzdetect/zone.rb', line 13 def latitude @latitude end |
#longitude ⇒ Object (readonly)
Returns the value of attribute longitude.
13 14 15 |
# File 'lib/tzdetect/zone.rb', line 13 def longitude @longitude end |
#region ⇒ Object (readonly)
Returns the value of attribute region.
13 14 15 |
# File 'lib/tzdetect/zone.rb', line 13 def region @region end |
#timezone ⇒ Object (readonly)
Returns the value of attribute timezone.
13 14 15 |
# File 'lib/tzdetect/zone.rb', line 13 def timezone @timezone end |
Class Method Details
.by_location(latitude, longitude) ⇒ Object
Detect timezone by latitude and longitude Returns TZInfo object, if can’t find timezone returns nil
102 103 104 105 106 107 108 109 |
# File 'lib/tzdetect/zone.rb', line 102 def by_location latitude, longitude begin self.by_location! latitude, longitude rescue Exception nil end end |
.by_location!(latitude, longitude) ⇒ Object
Detect timezone by latitude and longitude Returns TZInfo raise errors
86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/tzdetect/zone.rb', line 86 def by_location! latitude, longitude type = TZDetect::Configuration.service case type when :google geocoder = GoogleParser.new(latitude, longitude) when :geoname geocoder = GeonameParser.new(latitude, longitude) else raise TZDetect::Error::Configuration, "wrong configuration for field type" end TZInfo::Timezone.get geocoder.timezone! end |
.countries_with_many_tz ⇒ Object
Returns countries codes for countries with more then one timezone
61 62 63 |
# File 'lib/tzdetect/zone.rb', line 61 def countries_with_many_tz TZInfo::Country.all.select{|m| m.zones.count > 1}.map{|m| m.code} end |
.get(country_code, city, region = "", latitude = nil, longitude = nil) ⇒ Object
Detect timezone by country code city region and position data Returns TZInfo object and raise errors
74 75 76 77 78 79 80 81 |
# File 'lib/tzdetect/zone.rb', line 74 def get country_code, city, region="", latitude=nil, longitude=nil begin m = self.new country_code, city, region, latitude, longitude m.timezone rescue Exception nil end end |
.get!(country_code, city, region = "", latitude = nil, longitude = nil) ⇒ Object
Detect timezone by country code city region and position data Returns TZInfo object and raise errors
67 68 69 70 |
# File 'lib/tzdetect/zone.rb', line 67 def get! country_code, city, region="", latitude=nil, longitude=nil m = self.new country_code, city, region, latitude, longitude m.timezone end |
.get_location!(country_code, city, region = nil) ⇒ Object
Detect timezone by latitude and longitude Returns TZInfo object, if can’t find timezone returns nil
114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/tzdetect/zone.rb', line 114 def get_location!(country_code, city, region=nil) type = TZDetect::Configuration.service case type when :google geocoder = GoogleGeocode.new(country_code, city, region) when :geoname geocoder = GeonameGeocode.new(country_code, city, region) else raise TZDetect::Error::Configuration, "wrong configuration for field type" end geocoder.position! end |