Class: TZInfo::Timezone
- Inherits:
-
Object
- Object
- TZInfo::Timezone
- 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
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
-
#current_period ⇒ Object
Returns the TimezonePeriod for the current time.
-
#current_period_and_time ⇒ Object
Returns the current time and TimezonePeriod as an array.
-
#identifier ⇒ Object
The identifier of the timezone, e.g.
-
#local_to_utc(local) ⇒ Object
Converts a time in the local timezone to UTC.
-
#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.
-
#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.
47 48 49 |
# File 'lib/tzinfo/timezone.rb', line 47 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.
76 77 78 79 80 |
# File 'lib/tzinfo/timezone.rb', line 76 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’).
This method will take a substantial time to return the first time it is called as all the Timezone classes will have to be loaded by Ruby. If you just want the zone identifiers use all_country_zone_identifiers instead.
66 67 68 69 70 |
# File 'lib/tzinfo/timezone.rb', line 66 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.
54 55 56 |
# File 'lib/tzinfo/timezone.rb', line 54 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.
23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/tzinfo/timezone.rb', line 23 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).
36 37 38 39 40 41 42 |
# File 'lib/tzinfo/timezone.rb', line 36 def self.new(identifier = nil) if identifier get(identifier) else super() end end |
Instance Method Details
#current_period ⇒ Object
Returns the TimezonePeriod for the current time.
200 201 202 |
# File 'lib/tzinfo/timezone.rb', line 200 def current_period period_for_utc(Time.now.utc) end |
#current_period_and_time ⇒ Object
Returns the current time and TimezonePeriod as an array.
205 206 207 208 |
# File 'lib/tzinfo/timezone.rb', line 205 def current_period_and_time utc = Time.now.utc [utc_to_local(utc), period_for_utc(utc)] end |
#identifier ⇒ Object
The identifier of the timezone, e.g. “Europe/Paris”.
96 97 98 |
# File 'lib/tzinfo/timezone.rb', line 96 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.
188 189 190 191 192 |
# File 'lib/tzinfo/timezone.rb', line 188 def local_to_utc(local) run_on_datetime(local) {|local| period_for_local(local).to_utc(local) } end |
#now ⇒ Object
Returns the current time in the timezone as a Time.
195 196 197 |
# File 'lib/tzinfo/timezone.rb', line 195 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.
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
# File 'lib/tzinfo/timezone.rb', line 140 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.
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/tzinfo/timezone.rb', line 105 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 |
#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).
172 173 174 175 176 |
# File 'lib/tzinfo/timezone.rb', line 172 def utc_to_local(utc) run_on_datetime(utc) {|utc| period_for_utc(utc).to_local(utc) } end |