Class: TZInfo::Timezone
- Inherits:
-
Object
- Object
- TZInfo::Timezone
- Includes:
- Comparable
- Defined in:
- lib/tzinfo/timezone.rb
Overview
Timezone is the base class of all timezones. It provides a factory method get to access timezones by identifier. Once a specific Timezone has been retrieved, DateTimes and Times can be converted between the UTC and the local time for the zone. For example:
tz = TZInfo::Timezone.get('America/New_York')
puts tz.utc_to_local(DateTime.new(2005,8,29,15,35,0)).to_s
puts tz.local_to_utc(Time.utc(2005,8,29,11,35,0)).to_s
The timezone information all comes from the tz database (see www.twinsun.com/tz/tz-link.htm)
Direct Known Subclasses
Definitions::Africa::Abidjan, Definitions::Africa::Accra, Definitions::Africa::Addis_Ababa, Definitions::Africa::Algiers, Definitions::Africa::Asmera, Definitions::Africa::Bamako, Definitions::Africa::Bangui, Definitions::Africa::Banjul, Definitions::Africa::Bissau, Definitions::Africa::Blantyre, Definitions::Africa::Brazzaville, Definitions::Africa::Bujumbura, Definitions::Africa::Cairo, Definitions::Africa::Casablanca, Definitions::Africa::Ceuta, Definitions::Africa::Conakry, Definitions::Africa::Dakar, Definitions::Africa::Dar_es_Salaam, Definitions::Africa::Djibouti, Definitions::Africa::Douala, Definitions::Africa::El_Aaiun, Definitions::Africa::Freetown, Definitions::Africa::Gaborone, Definitions::Africa::Harare, Definitions::Africa::Johannesburg, Definitions::Africa::Kampala, Definitions::Africa::Khartoum, Definitions::Africa::Kigali, Definitions::Africa::Kinshasa, Definitions::Africa::Lagos, Definitions::Africa::Libreville, Definitions::Africa::Lome, Definitions::Africa::Luanda, Definitions::Africa::Lubumbashi, Definitions::Africa::Lusaka, Definitions::Africa::Malabo, Definitions::Africa::Maputo, Definitions::Africa::Maseru, Definitions::Africa::Mbabane, Definitions::Africa::Mogadishu, Definitions::Africa::Monrovia, Definitions::Africa::Nairobi, Definitions::Africa::Ndjamena, Definitions::Africa::Niamey, Definitions::Africa::Nouakchott, Definitions::Africa::Ouagadougou, Definitions::Africa::Porto__m__Novo, Definitions::Africa::Sao_Tome, Definitions::Africa::Tripoli, Definitions::Africa::Tunis, Definitions::Africa::Windhoek, Definitions::America::Adak, Definitions::America::Anchorage, Definitions::America::Anguilla, Definitions::America::Antigua, Definitions::America::Araguaina, Definitions::America::Argentina::Buenos_Aires, Definitions::America::Argentina::Catamarca, Definitions::America::Argentina::Cordoba, Definitions::America::Argentina::Jujuy, Definitions::America::Argentina::La_Rioja, Definitions::America::Argentina::Mendoza, Definitions::America::Argentina::Rio_Gallegos, Definitions::America::Argentina::San_Juan, Definitions::America::Argentina::Tucuman, Definitions::America::Argentina::Ushuaia, Definitions::America::Aruba, Definitions::America::Asuncion, Definitions::America::Bahia, Definitions::America::Barbados, Definitions::America::Belem, Definitions::America::Belize, Definitions::America::Boa_Vista, Definitions::America::Bogota, Definitions::America::Boise, Definitions::America::Cambridge_Bay, Definitions::America::Campo_Grande, Definitions::America::Cancun, Definitions::America::Caracas, Definitions::America::Cayenne, Definitions::America::Cayman, Definitions::America::Chicago, Definitions::America::Chihuahua, Definitions::America::Coral_Harbour, Definitions::America::Costa_Rica, Definitions::America::Cuiaba, Definitions::America::Curacao, Definitions::America::Danmarkshavn, Definitions::America::Dawson, Definitions::America::Dawson_Creek, Definitions::America::Denver, Definitions::America::Detroit, Definitions::America::Dominica, Definitions::America::Edmonton, Definitions::America::Eirunepe, Definitions::America::El_Salvador, Definitions::America::Fortaleza, Definitions::America::Glace_Bay, Definitions::America::Godthab, Definitions::America::Goose_Bay, Definitions::America::Grand_Turk, Definitions::America::Grenada, Definitions::America::Guadeloupe, Definitions::America::Guatemala, Definitions::America::Guayaquil, Definitions::America::Guyana, Definitions::America::Halifax, Definitions::America::Havana, Definitions::America::Hermosillo, Definitions::America::Indiana::Indianapolis, Definitions::America::Indiana::Knox, Definitions::America::Indiana::Marengo, Definitions::America::Indiana::Vevay, Definitions::America::Inuvik, Definitions::America::Iqaluit, Definitions::America::Jamaica, Definitions::America::Juneau, Definitions::America::Kentucky::Louisville, Definitions::America::Kentucky::Monticello, Definitions::America::La_Paz, Definitions::America::Lima, Definitions::America::Los_Angeles, Definitions::America::Maceio, Definitions::America::Managua, Definitions::America::Manaus, Definitions::America::Martinique, Definitions::America::Mazatlan, Definitions::America::Menominee, Definitions::America::Merida, Definitions::America::Mexico_City, Definitions::America::Miquelon, Definitions::America::Monterrey, Definitions::America::Montevideo, Definitions::America::Montreal, Definitions::America::Montserrat, Definitions::America::Nassau, Definitions::America::New_York, Definitions::America::Nipigon, Definitions::America::Nome, Definitions::America::Noronha, Definitions::America::North_Dakota::Center, Definitions::America::Panama, Definitions::America::Pangnirtung, Definitions::America::Paramaribo, Definitions::America::Phoenix, Definitions::America::Port__m__au__m__Prince, Definitions::America::Port_of_Spain, Definitions::America::Porto_Velho, Definitions::America::Puerto_Rico, Definitions::America::Rainy_River, Definitions::America::Rankin_Inlet, Definitions::America::Recife, Definitions::America::Regina, Definitions::America::Rio_Branco, Definitions::America::Santiago, Definitions::America::Santo_Domingo, Definitions::America::Sao_Paulo, Definitions::America::Scoresbysund, Definitions::America::St_Johns, Definitions::America::St_Kitts, Definitions::America::St_Lucia, Definitions::America::St_Thomas, Definitions::America::St_Vincent, Definitions::America::Swift_Current, Definitions::America::Tegucigalpa, Definitions::America::Thule, Definitions::America::Thunder_Bay, Definitions::America::Tijuana, Definitions::America::Toronto, Definitions::America::Tortola, Definitions::America::Vancouver, Definitions::America::Whitehorse, Definitions::America::Winnipeg, Definitions::America::Yakutat, Definitions::America::Yellowknife, Definitions::Antarctica::Casey, Definitions::Antarctica::Davis, Definitions::Antarctica::DumontDUrville, Definitions::Antarctica::Mawson, Definitions::Antarctica::McMurdo, Definitions::Antarctica::Palmer, Definitions::Antarctica::Rothera, Definitions::Antarctica::Syowa, Definitions::Antarctica::Vostok, Definitions::Asia::Aden, Definitions::Asia::Almaty, Definitions::Asia::Amman, Definitions::Asia::Anadyr, Definitions::Asia::Aqtau, Definitions::Asia::Aqtobe, Definitions::Asia::Ashgabat, Definitions::Asia::Baghdad, Definitions::Asia::Bahrain, Definitions::Asia::Baku, Definitions::Asia::Bangkok, Definitions::Asia::Beirut, Definitions::Asia::Bishkek, Definitions::Asia::Brunei, Definitions::Asia::Calcutta, Definitions::Asia::Choibalsan, Definitions::Asia::Chongqing, Definitions::Asia::Colombo, Definitions::Asia::Damascus, Definitions::Asia::Dhaka, Definitions::Asia::Dili, Definitions::Asia::Dubai, Definitions::Asia::Dushanbe, Definitions::Asia::Gaza, Definitions::Asia::Harbin, Definitions::Asia::Hong_Kong, Definitions::Asia::Hovd, Definitions::Asia::Irkutsk, Definitions::Asia::Jakarta, Definitions::Asia::Jayapura, Definitions::Asia::Jerusalem, Definitions::Asia::Kabul, Definitions::Asia::Kamchatka, Definitions::Asia::Karachi, Definitions::Asia::Kashgar, Definitions::Asia::Katmandu, Definitions::Asia::Krasnoyarsk, Definitions::Asia::Kuala_Lumpur, Definitions::Asia::Kuching, Definitions::Asia::Kuwait, Definitions::Asia::Macau, Definitions::Asia::Magadan, Definitions::Asia::Makassar, Definitions::Asia::Manila, Definitions::Asia::Muscat, Definitions::Asia::Nicosia, Definitions::Asia::Novosibirsk, Definitions::Asia::Omsk, Definitions::Asia::Oral, Definitions::Asia::Phnom_Penh, Definitions::Asia::Pontianak, Definitions::Asia::Pyongyang, Definitions::Asia::Qatar, Definitions::Asia::Qyzylorda, Definitions::Asia::Rangoon, Definitions::Asia::Riyadh, Definitions::Asia::Riyadh87, Definitions::Asia::Riyadh88, Definitions::Asia::Riyadh89, Definitions::Asia::Saigon, Definitions::Asia::Sakhalin, Definitions::Asia::Samarkand, Definitions::Asia::Seoul, Definitions::Asia::Shanghai, Definitions::Asia::Singapore, Definitions::Asia::Taipei, Definitions::Asia::Tashkent, Definitions::Asia::Tbilisi, Definitions::Asia::Tehran, Definitions::Asia::Thimphu, Definitions::Asia::Tokyo, Definitions::Asia::Ulaanbaatar, Definitions::Asia::Urumqi, Definitions::Asia::Vientiane, Definitions::Asia::Vladivostok, Definitions::Asia::Yakutsk, Definitions::Asia::Yekaterinburg, Definitions::Asia::Yerevan, Definitions::Atlantic::Azores, Definitions::Atlantic::Bermuda, Definitions::Atlantic::Canary, Definitions::Atlantic::Cape_Verde, Definitions::Atlantic::Faeroe, Definitions::Atlantic::Madeira, Definitions::Atlantic::Reykjavik, Definitions::Atlantic::South_Georgia, Definitions::Atlantic::St_Helena, Definitions::Atlantic::Stanley, Definitions::Australia::Adelaide, Definitions::Australia::Brisbane, Definitions::Australia::Broken_Hill, Definitions::Australia::Currie, Definitions::Australia::Darwin, Definitions::Australia::Hobart, Definitions::Australia::Lindeman, Definitions::Australia::Lord_Howe, Definitions::Australia::Melbourne, Definitions::Australia::Perth, Definitions::Australia::Sydney, Definitions::CET, Definitions::EET, Definitions::Etc::GMT, Definitions::Etc::GMT__m__1, Definitions::Etc::GMT__m__10, Definitions::Etc::GMT__m__11, Definitions::Etc::GMT__m__12, Definitions::Etc::GMT__m__13, Definitions::Etc::GMT__m__14, Definitions::Etc::GMT__m__2, Definitions::Etc::GMT__m__3, Definitions::Etc::GMT__m__4, Definitions::Etc::GMT__m__5, Definitions::Etc::GMT__m__6, Definitions::Etc::GMT__m__7, Definitions::Etc::GMT__m__8, Definitions::Etc::GMT__m__9, Definitions::Etc::GMT__p__1, Definitions::Etc::GMT__p__10, Definitions::Etc::GMT__p__11, Definitions::Etc::GMT__p__12, Definitions::Etc::GMT__p__2, Definitions::Etc::GMT__p__3, Definitions::Etc::GMT__p__4, Definitions::Etc::GMT__p__5, Definitions::Etc::GMT__p__6, Definitions::Etc::GMT__p__7, Definitions::Etc::GMT__p__8, Definitions::Etc::GMT__p__9, Definitions::Etc::UCT, Definitions::Etc::UTC, Definitions::Europe::Amsterdam, Definitions::Europe::Andorra, Definitions::Europe::Athens, Definitions::Europe::Belgrade, Definitions::Europe::Berlin, Definitions::Europe::Brussels, Definitions::Europe::Bucharest, Definitions::Europe::Budapest, Definitions::Europe::Chisinau, Definitions::Europe::Copenhagen, Definitions::Europe::Dublin, Definitions::Europe::Gibraltar, Definitions::Europe::Helsinki, Definitions::Europe::Istanbul, Definitions::Europe::Kaliningrad, Definitions::Europe::Kiev, Definitions::Europe::Lisbon, Definitions::Europe::London, Definitions::Europe::Luxembourg, Definitions::Europe::Madrid, Definitions::Europe::Malta, Definitions::Europe::Minsk, Definitions::Europe::Monaco, Definitions::Europe::Moscow, Definitions::Europe::Oslo, Definitions::Europe::Paris, Definitions::Europe::Prague, Definitions::Europe::Riga, Definitions::Europe::Rome, Definitions::Europe::Samara, Definitions::Europe::Simferopol, Definitions::Europe::Sofia, Definitions::Europe::Stockholm, Definitions::Europe::Tallinn, Definitions::Europe::Tirane, Definitions::Europe::Uzhgorod, Definitions::Europe::Vaduz, Definitions::Europe::Vienna, Definitions::Europe::Vilnius, Definitions::Europe::Warsaw, Definitions::Europe::Zaporozhye, Definitions::Europe::Zurich, Definitions::Indian::Antananarivo, Definitions::Indian::Chagos, Definitions::Indian::Christmas, Definitions::Indian::Cocos, Definitions::Indian::Comoro, Definitions::Indian::Kerguelen, Definitions::Indian::Mahe, Definitions::Indian::Maldives, Definitions::Indian::Mauritius, Definitions::Indian::Mayotte, Definitions::Indian::Reunion, Definitions::MET, Definitions::Pacific::Apia, Definitions::Pacific::Auckland, Definitions::Pacific::Chatham, Definitions::Pacific::Easter, Definitions::Pacific::Efate, Definitions::Pacific::Enderbury, Definitions::Pacific::Fakaofo, Definitions::Pacific::Fiji, Definitions::Pacific::Funafuti, Definitions::Pacific::Galapagos, Definitions::Pacific::Gambier, Definitions::Pacific::Guadalcanal, Definitions::Pacific::Guam, Definitions::Pacific::Honolulu, Definitions::Pacific::Johnston, Definitions::Pacific::Kiritimati, Definitions::Pacific::Kosrae, Definitions::Pacific::Kwajalein, Definitions::Pacific::Majuro, Definitions::Pacific::Marquesas, Definitions::Pacific::Midway, Definitions::Pacific::Nauru, Definitions::Pacific::Niue, Definitions::Pacific::Norfolk, Definitions::Pacific::Noumea, Definitions::Pacific::Pago_Pago, Definitions::Pacific::Palau, Definitions::Pacific::Pitcairn, Definitions::Pacific::Ponape, Definitions::Pacific::Port_Moresby, Definitions::Pacific::Rarotonga, Definitions::Pacific::Saipan, Definitions::Pacific::Tahiti, Definitions::Pacific::Tarawa, Definitions::Pacific::Tongatapu, Definitions::Pacific::Truk, Definitions::Pacific::Wake, Definitions::Pacific::Wallis, Definitions::WET, TimezoneProxy
Class Method Summary collapse
-
.all ⇒ Object
At the moment, returns the result of all_country_zones.
-
.all_country_zone_identifiers ⇒ Object
Returns all the zone identifiers defined for all Countries.
-
.all_country_zones ⇒ Object
Returns all the Timezones defined for all Countries.
-
.all_identifiers ⇒ Object
At the moment, returns the result of all_country_zone_identifiers.
-
.get(identifier) ⇒ Object
Returns a timezone by its identifier (e.g. “Europe/London”, “America/Chicago” or “UTC”).
-
.new(identifier = nil) ⇒ Object
If identifier is nil calls super(), else calls get(identifier).
-
.us_zone_identifiers ⇒ Object
Returns all US zone identifiers.
-
.us_zones ⇒ Object
Returns all US Timezone instances.
Instance Method Summary collapse
-
#<=>(tz) ⇒ Object
Compare two Timezones based on their identifier.
-
#==(tz) ⇒ Object
Two Timezones are considered to be equal if their identifiers are the same.
-
#current_period ⇒ Object
Returns the TimezonePeriod for the current time.
-
#current_period_and_time ⇒ Object
Returns the current time and TimezonePeriod as an array.
-
#friendly_identifier(skip_first_part = false) ⇒ Object
Returns a friendlier version of the idenfitifer.
-
#identifier ⇒ Object
The identifier of the timezone, e.g.
-
#local_to_utc(local) ⇒ Object
Converts a time in the local timezone to UTC.
-
#name ⇒ Object
An alias for identifier.
-
#now ⇒ Object
Returns the current time in the timezone as a Time.
-
#period_for_local(local) ⇒ Object
Returns the TimezonePeriod for the given local time.
-
#period_for_utc(utc) ⇒ Object
Returns the TimezonePeriod for the given UTC time.
-
#to_s ⇒ Object
Returns a friendlier version of the idenfitifer.
-
#utc_to_local(utc) ⇒ Object
Converts a time in UTC to the local timezone.
Class Method Details
.all ⇒ Object
At the moment, returns the result of all_country_zones. May be changed in the future to return all the Timezone instances including non-country specific zones.
50 51 52 |
# File 'lib/tzinfo/timezone.rb', line 50 def self.all all_country_zones end |
.all_country_zone_identifiers ⇒ Object
Returns all the zone identifiers defined for all Countries. This is not the complete set of zone identifiers as some are not country specific (e.g. ‘Etc/GMT’). You can obtain a Timezone instance for a given identifier with the get method.
77 78 79 80 81 |
# File 'lib/tzinfo/timezone.rb', line 77 def self.all_country_zone_identifiers Country.all_codes.inject([]) {|zones,country| zones += Country.get(country).zone_identifiers } end |
.all_country_zones ⇒ Object
Returns all the Timezones defined for all Countries. This is not the complete set of Timezones as some are not country specific (e.g. ‘Etc/GMT’).
Returns TimezoneProxy objects to avoid the overhead of loading Timezone definitions until a conversion is actually required.
67 68 69 70 71 |
# File 'lib/tzinfo/timezone.rb', line 67 def self.all_country_zones Country.all_codes.inject([]) {|zones,country| zones += Country.get(country).zones } end |
.all_identifiers ⇒ Object
At the moment, returns the result of all_country_zone_identifiers. May be changed in the future to return all the zone identifiers including non-country specific zones.
57 58 59 |
# File 'lib/tzinfo/timezone.rb', line 57 def self.all_identifiers all_country_zone_identifiers end |
.get(identifier) ⇒ Object
Returns a timezone by its identifier (e.g. “Europe/London”, “America/Chicago” or “UTC”).
Raises an exception of the timezone couldn’t be found.
25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/tzinfo/timezone.rb', line 25 def self.get(identifier) raise 'Invalid identifier' if identifier !~ /^[A-z0-9\+\-_]+(\/[A-z0-9\+\-_]+)*$/ identifier = identifier.gsub(/-/, '__m__').gsub(/\+/, '__p__') require "tzinfo/definitions/#{identifier}" m = Definitions identifier.split(/\//).each {|part| m = m.const_get(part) } m.instance end |
.new(identifier = nil) ⇒ Object
If identifier is nil calls super(), else calls get(identifier).
38 39 40 41 42 43 44 45 |
# File 'lib/tzinfo/timezone.rb', line 38 def self.new(identifier = nil) if identifier puts 'getting' get(identifier) else super() end end |
.us_zone_identifiers ⇒ Object
Returns all US zone identifiers. A shortcut for TZInfo::Country.get(‘US’).zone_identifiers.
94 95 96 |
# File 'lib/tzinfo/timezone.rb', line 94 def self.us_zone_identifiers Country.get('US').zone_identifiers end |
.us_zones ⇒ Object
Returns all US Timezone instances. A shortcut for TZInfo::Country.get(‘US’).zones.
Returns TimezoneProxy objects to avoid the overhead of loading Timezone definitions until a conversion is actually required.
88 89 90 |
# File 'lib/tzinfo/timezone.rb', line 88 def self.us_zones Country.get('US').zones end |
Instance Method Details
#<=>(tz) ⇒ Object
Compare two Timezones based on their identifier. Returns -1 if tz is less than self, 0 if tz is equal to self and +1 if tz is greater than self.
268 269 270 |
# File 'lib/tzinfo/timezone.rb', line 268 def <=>(tz) identifier <=> tz.identifier end |
#==(tz) ⇒ Object
Two Timezones are considered to be equal if their identifiers are the same.
262 263 264 |
# File 'lib/tzinfo/timezone.rb', line 262 def ==(tz) identifier == tz.identifier end |
#current_period ⇒ Object
Returns the TimezonePeriod for the current time.
251 252 253 |
# File 'lib/tzinfo/timezone.rb', line 251 def current_period period_for_utc(Time.now.utc) end |
#current_period_and_time ⇒ Object
Returns the current time and TimezonePeriod as an array.
256 257 258 259 |
# File 'lib/tzinfo/timezone.rb', line 256 def current_period_and_time utc = Time.now.utc [utc_to_local(utc), period_for_utc(utc)] end |
#friendly_identifier(skip_first_part = false) ⇒ Object
Returns a friendlier version of the idenfitifer. Set skip_first_part to omit the first part of the identifier (typically a region name) where there is more than one part.
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/tzinfo/timezone.rb', line 117 def friendly_identifier(skip_first_part = false) parts = identifier.split('/') if parts.empty? # shouldn't happen identifier elsif parts.length == 1 parts[0] else if skip_first_part result = '' else result = parts[0] + ' - ' end parts[1, parts.length - 1].reverse_each {|part| part.gsub!(/_/, ' ') # Missing a space if a lower case followed by an upper case and the # name isn't McXxxx. part.gsub!(/[^M]([a-z])([A-Z])/, '\1 \2') part.gsub!(/[M]([a-bd-z])([A-Z])/, '\1 \2') # Missing an apostrophe if two consecutive upper case characters. part.gsub!(/([A-Z])([A-Z])/, '\1\'\2') result << part result << ', ' } result.slice!(result.length - 2, 2) result end end |
#identifier ⇒ Object
The identifier of the timezone, e.g. “Europe/Paris”.
99 100 101 |
# File 'lib/tzinfo/timezone.rb', line 99 def identifier 'Unknown' end |
#local_to_utc(local) ⇒ Object
Converts a time in the local timezone to UTC. local can either be a DateTime or a Time. The returned time has the same type as local. Any timezone information in local is ignored (it is treated as a local time).
During the period when daylight savings reverts to standard time and there are two possible UTC times for each local time, local_to_utc returns the earlier time.
For times skipped during a change to daylight savings, PeriodNotFound is raised.
239 240 241 242 243 |
# File 'lib/tzinfo/timezone.rb', line 239 def local_to_utc(local) run_on_datetime(local) {|local| period_for_local(local).to_utc(local) } end |
#name ⇒ Object
An alias for identifier.
104 105 106 107 |
# File 'lib/tzinfo/timezone.rb', line 104 def name # Don't use alias, as identifier gets overridden. identifier end |
#now ⇒ Object
Returns the current time in the timezone as a Time.
246 247 248 |
# File 'lib/tzinfo/timezone.rb', line 246 def now utc_to_local(Time.now.utc) end |
#period_for_local(local) ⇒ Object
Returns the TimezonePeriod for the given local time. local can either be a DateTime or a Time. Any timezone information in local is ignored (it is treated as a time in the current timezone).
If no TimezonePeriod could be found, PeriodNotFound is raised. This will happen when a change to daylight savings occurs and an hour is skipped.
191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/tzinfo/timezone.rb', line 191 def period_for_local(local) run_on_datetime(local) {|local| # dumb search for now periods.each {|period| if period.valid_for_local?(local) return period end } # if nothing found, assume the first and last periods are unbounded if periods.length > 0 last = periods[periods.length - 1] if last.local_after_start?(local) last else first = periods[0] if first.local_before_end?(local) first else raise PeriodNotFound, "No time period found for #{utc}. This could be because a change to daylight savings time caused an hour to be skipped." end end else raise PeriodNotFound, "No time period found for #{utc}. This could be because a change to daylight savings time caused an hour to be skipped." end } end |
#period_for_utc(utc) ⇒ Object
Returns the TimezonePeriod for the given UTC time. utc can either be a DateTime or a Time. Any timezone information in utc is ignored (it is treated as a UTC time).
If no TimezonePeriod could be found, PeriodNotFound is raised.
156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 |
# File 'lib/tzinfo/timezone.rb', line 156 def period_for_utc(utc) run_on_datetime(utc) {|utc| # dumb search for now periods.each {|period| if period.valid_for_utc?(utc) return period end } # if nothing found, assume the first and last periods are unbounded if periods.length > 0 last = periods[periods.length - 1] if last.utc_after_start?(utc) last else first = periods[0] if first.utc_before_end?(utc) first else raise PeriodNotFound, "No time period found for #{utc}" end end else raise PeriodNotFound, "No time period found for #{utc}" end } end |
#to_s ⇒ Object
Returns a friendlier version of the idenfitifer.
110 111 112 |
# File 'lib/tzinfo/timezone.rb', line 110 def to_s friendly_identifier end |
#utc_to_local(utc) ⇒ Object
Converts a time in UTC to the local timezone. utc can either be a DateTime or a Time. The returned time has the same type as utc. Any timezone information in utc is ignored (it is treated as a UTC time).
223 224 225 226 227 |
# File 'lib/tzinfo/timezone.rb', line 223 def utc_to_local(utc) run_on_datetime(utc) {|utc| period_for_utc(utc).to_local(utc) } end |