timezone 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +2 -0
- data/CHANGES.markdown +2 -2
- data/CONTRIBUTING.markdown +6 -2
- data/README.markdown +10 -4
- data/Rakefile +1 -1
- data/data/Asia/Nicosia.json +1 -1
- data/lib/timezone.rb +2 -2
- data/lib/timezone/active_support.rb +410 -0
- data/lib/timezone/parser.rb +29 -0
- data/lib/timezone/parser/data.rb +103 -0
- data/lib/timezone/parser/link.rb +10 -0
- data/lib/timezone/parser/rule.rb +55 -0
- data/lib/timezone/parser/rule/entry.rb +74 -0
- data/lib/timezone/parser/rule/on.rb +30 -0
- data/lib/timezone/parser/rule/on_rules.rb +30 -0
- data/lib/timezone/parser/zone.rb +37 -0
- data/lib/timezone/parser/zone/data_generator.rb +77 -0
- data/lib/timezone/parser/zone/entry.rb +39 -0
- data/lib/timezone/parser/zone/until.rb +28 -0
- data/lib/timezone/version.rb +1 -1
- data/lib/timezone/zone.rb +7 -2
- data/test/data/asia +2717 -0
- data/test/timezone/parser/rule/on_rules_test.rb +20 -0
- data/test/timezone/parser/rule_test.rb +52 -0
- data/test/timezone/parser/zone/data_generator_test.rb +101 -0
- data/test/timezone/parser/zone/until_test.rb +13 -0
- data/test/timezone/parser/zone_test.rb +42 -0
- data/test/timezone/parser_test.rb +12 -0
- data/test/timezone_test.rb +47 -1
- data/timezone.gemspec +1 -1
- metadata +33 -10
- data/lib/timezone/rule.rb +0 -30
- data/test/rule_test.rb +0 -42
    
        data/.travis.yml
    CHANGED
    
    
    
        data/CHANGES.markdown
    CHANGED
    
    
    
        data/CONTRIBUTING.markdown
    CHANGED
    
    | @@ -2,6 +2,10 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            * Bundler is used to manage dependencies.
         | 
| 4 4 | 
             
            * Tests can be run with the `rake` command.
         | 
| 5 | 
            -
            * Updated JSON data is imported from the
         | 
| 6 | 
            -
              [tzdata](https://gitorious.org/tz/tzdata) repository.
         | 
| 7 5 | 
             
            * Write tests and create pull requests.
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            # How to Acquire New TZData Information
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            * Download `tzdataXYZ.tar.gz` from [IANA](http://www.iana.org/time-zones).
         | 
| 10 | 
            +
            * Extract using `tar -xvzf tzdataXYZ.tar.gz -C path`.
         | 
| 11 | 
            +
            * Convert the timezone text files to JSON.
         | 
    
        data/README.markdown
    CHANGED
    
    | @@ -42,13 +42,19 @@ Finally, pass the coordinates to your timezone initialization function. | |
| 42 42 | 
             
                timezone.time Time.now
         | 
| 43 43 | 
             
                => 2011-02-12 12:02:13 UTC
         | 
| 44 44 |  | 
| 45 | 
            +
            ## Displaying a timezone's name in a Rails/ActiveSupport compatible format
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                timezone = Timezone::Zone.new :latlon => [-34.92771808058, 138.477041423321]
         | 
| 48 | 
            +
                timezone.active_support_time_zone
         | 
| 49 | 
            +
                => "Eastern Time (US & Canada)"
         | 
| 50 | 
            +
             | 
| 45 51 | 
             
            ## Getting the complete list of timezones.
         | 
| 46 52 |  | 
| 47 53 | 
             
            Retrieving the complete list of timezones is quite simple:
         | 
| 48 54 |  | 
| 49 55 | 
             
                timezones = Timezone::Zone.names
         | 
| 50 56 | 
             
                => ["Africa/Abidjan", "Africa/Accra", "Africa/Addis_Ababa", "Africa/Algiers", ...]
         | 
| 51 | 
            -
             | 
| 57 | 
            +
             | 
| 52 58 | 
             
            ## Listing current information from specific timezones
         | 
| 53 59 |  | 
| 54 60 | 
             
            If you need information from a specific set of timezones rather than a complete list or one at a time, this can be accomplished with the following:
         | 
| @@ -62,19 +68,19 @@ If you need information from a specific set of timezones rather than a complete | |
| 62 68 | 
             
                #   :utc_offset => -5, # UTC offset in hours
         | 
| 63 69 | 
             
                #   :dst => false
         | 
| 64 70 | 
             
                # }
         | 
| 65 | 
            -
             | 
| 71 | 
            +
             | 
| 66 72 | 
             
            You can customize what is placed in the `:title` key in the configuration block. This would be useful in the case of an HTML select list that you would like to display different values than the default name.  For example, the following configuration will set the `:title` key in the list hash to "Chicago" rather than "America/Chicago".
         | 
| 67 73 |  | 
| 68 74 | 
             
                Timezone::Configure.build do |c|
         | 
| 69 75 | 
             
                  c.replace "America/Chicago", with: "Chicago"
         | 
| 70 76 | 
             
                end
         | 
| 71 | 
            -
             | 
| 77 | 
            +
             | 
| 72 78 | 
             
            Also, if you make numerous calls to the **Zone#list** method in your software, but you would like to avoid duplicating which timezones to retrieve, you can set a default in the configuration:
         | 
| 73 79 |  | 
| 74 80 | 
             
                Timezone::Configure.begin do |c|
         | 
| 75 81 | 
             
                  c.default_for_list = "America/Chicago", "America/New_York", "Australia/Sydney"
         | 
| 76 82 | 
             
                end
         | 
| 77 | 
            -
             | 
| 83 | 
            +
             | 
| 78 84 | 
             
            Finally, by default the **Zone#list** method will order the results by the timezone's UTC offset. You can customize this behavior this way:
         | 
| 79 85 |  | 
| 80 86 | 
             
                Timezone::Configure.begin do |c|
         | 
    
        data/Rakefile
    CHANGED
    
    
    
        data/data/Asia/Nicosia.json
    CHANGED
    
    
    
        data/lib/timezone.rb
    CHANGED
    
    | @@ -1,3 +1,3 @@ | |
| 1 | 
            -
            require  | 
| 1 | 
            +
            require 'timezone/zone'
         | 
| 2 2 |  | 
| 3 | 
            -
            module Timezone; end
         | 
| 3 | 
            +
            module Timezone; end
         | 
| @@ -0,0 +1,410 @@ | |
| 1 | 
            +
            module Timezone
         | 
| 2 | 
            +
              # ActiveSupport class for mapping tz info identifiers to rails identifiers
         | 
| 3 | 
            +
              class ActiveSupport
         | 
| 4 | 
            +
                TIMEZONE_MAPPING = {
         | 
| 5 | 
            +
                  "Australia/Adelaide"             => "Adelaide",
         | 
| 6 | 
            +
                  "Australia/Broken_Hill"          => "Adelaide",
         | 
| 7 | 
            +
                  "America/Anchorage"              => "Alaska",
         | 
| 8 | 
            +
                  "America/Juneau"                 => "Alaska",
         | 
| 9 | 
            +
                  "America/Nome"                   => "Alaska",
         | 
| 10 | 
            +
                  "America/Yakutat"                => "Alaska",
         | 
| 11 | 
            +
                  "Pacific/Gambier"                => "Alaska",
         | 
| 12 | 
            +
                  "Asia/Almaty"                    => "Almaty",
         | 
| 13 | 
            +
                  "Europe/Amsterdam"               => "Amsterdam",
         | 
| 14 | 
            +
                  "Europe/Athens"                  => "Athens",
         | 
| 15 | 
            +
                  "America/Anguilla"               => "Atlantic Time (Canada)",
         | 
| 16 | 
            +
                  "America/Antigua"                => "Atlantic Time (Canada)",
         | 
| 17 | 
            +
                  "America/Argentina/San_Luis"     => "Atlantic Time (Canada)",
         | 
| 18 | 
            +
                  "America/Aruba"                  => "Atlantic Time (Canada)",
         | 
| 19 | 
            +
                  "America/Asuncion"               => "Atlantic Time (Canada)",
         | 
| 20 | 
            +
                  "America/Barbados"               => "Atlantic Time (Canada)",
         | 
| 21 | 
            +
                  "America/Blanc-Sablon"           => "Atlantic Time (Canada)",
         | 
| 22 | 
            +
                  "America/Boa_Vista"              => "Atlantic Time (Canada)",
         | 
| 23 | 
            +
                  "America/Campo_Grande"           => "Atlantic Time (Canada)",
         | 
| 24 | 
            +
                  "America/Cuiaba"                 => "Atlantic Time (Canada)",
         | 
| 25 | 
            +
                  "America/Curacao"                => "Atlantic Time (Canada)",
         | 
| 26 | 
            +
                  "America/Dominica"               => "Atlantic Time (Canada)",
         | 
| 27 | 
            +
                  "America/Eirunepe"               => "Atlantic Time (Canada)",
         | 
| 28 | 
            +
                  "America/Glace_Bay"              => "Atlantic Time (Canada)",
         | 
| 29 | 
            +
                  "America/Goose_Bay"              => "Atlantic Time (Canada)",
         | 
| 30 | 
            +
                  "America/Grenada"                => "Atlantic Time (Canada)",
         | 
| 31 | 
            +
                  "America/Guadeloupe"             => "Atlantic Time (Canada)",
         | 
| 32 | 
            +
                  "America/Guyana"                 => "Atlantic Time (Canada)",
         | 
| 33 | 
            +
                  "America/Halifax"                => "Atlantic Time (Canada)",
         | 
| 34 | 
            +
                  "America/Manaus"                 => "Atlantic Time (Canada)",
         | 
| 35 | 
            +
                  "America/Marigot"                => "Atlantic Time (Canada)",
         | 
| 36 | 
            +
                  "America/Martinique"             => "Atlantic Time (Canada)",
         | 
| 37 | 
            +
                  "America/Moncton"                => "Atlantic Time (Canada)",
         | 
| 38 | 
            +
                  "America/Montserrat"             => "Atlantic Time (Canada)",
         | 
| 39 | 
            +
                  "America/Porto_Velho"            => "Atlantic Time (Canada)",
         | 
| 40 | 
            +
                  "America/Port_of_Spain"          => "Atlantic Time (Canada)",
         | 
| 41 | 
            +
                  "America/Puerto_Rico"            => "Atlantic Time (Canada)",
         | 
| 42 | 
            +
                  "America/Rio_Branco"             => "Atlantic Time (Canada)",
         | 
| 43 | 
            +
                  "America/Santo_Domingo"          => "Atlantic Time (Canada)",
         | 
| 44 | 
            +
                  "America/St_Barthelemy"          => "Atlantic Time (Canada)",
         | 
| 45 | 
            +
                  "America/St_Kitts"               => "Atlantic Time (Canada)",
         | 
| 46 | 
            +
                  "America/St_Lucia"               => "Atlantic Time (Canada)",
         | 
| 47 | 
            +
                  "America/St_Thomas"              => "Atlantic Time (Canada)",
         | 
| 48 | 
            +
                  "America/St_Vincent"             => "Atlantic Time (Canada)",
         | 
| 49 | 
            +
                  "America/Thule"                  => "Atlantic Time (Canada)",
         | 
| 50 | 
            +
                  "America/Tortola"                => "Atlantic Time (Canada)",
         | 
| 51 | 
            +
                  "Antarctica/Palmer"              => "Atlantic Time (Canada)",
         | 
| 52 | 
            +
                  "Atlantic/Bermuda"               => "Atlantic Time (Canada)",
         | 
| 53 | 
            +
                  "Atlantic/Stanley"               => "Atlantic Time (Canada)",
         | 
| 54 | 
            +
                  "Antarctica/McMurdo"             => "Auckland",
         | 
| 55 | 
            +
                  "Antarctica/South_Pole"          => "Auckland",
         | 
| 56 | 
            +
                  "Pacific/Auckland"               => "Auckland",
         | 
| 57 | 
            +
                  "Pacific/Funafuti"               => "Auckland",
         | 
| 58 | 
            +
                  "Pacific/Kwajalein"              => "Auckland",
         | 
| 59 | 
            +
                  "Pacific/Majuro"                 => "Auckland",
         | 
| 60 | 
            +
                  "Pacific/Nauru"                  => "Auckland",
         | 
| 61 | 
            +
                  "Pacific/Tarawa"                 => "Auckland",
         | 
| 62 | 
            +
                  "Pacific/Wake"                   => "Auckland",
         | 
| 63 | 
            +
                  "Pacific/Wallis"                 => "Auckland",
         | 
| 64 | 
            +
                  "Atlantic/Azores"                => "Azores",
         | 
| 65 | 
            +
                  "Asia/Baghdad"                   => "Baghdad",
         | 
| 66 | 
            +
                  "Asia/Baku"                      => "Baku",
         | 
| 67 | 
            +
                  "Asia/Dubai"                     => "Baku",
         | 
| 68 | 
            +
                  "Indian/Mahe"                    => "Baku",
         | 
| 69 | 
            +
                  "Indian/Mauritius"               => "Baku",
         | 
| 70 | 
            +
                  "Indian/Reunion"                 => "Baku",
         | 
| 71 | 
            +
                  "Asia/Bangkok"                   => "Bangkok",
         | 
| 72 | 
            +
                  "Europe/Belgrade"                => "Belgrade",
         | 
| 73 | 
            +
                  "Europe/Berlin"                  => "Berlin",
         | 
| 74 | 
            +
                  "America/Bogota"                 => "Bogota",
         | 
| 75 | 
            +
                  "Europe/Bratislava"              => "Bratislava",
         | 
| 76 | 
            +
                  "Australia/Brisbane"             => "Brisbane",
         | 
| 77 | 
            +
                  "Europe/Brussels"                => "Brussels",
         | 
| 78 | 
            +
                  "Europe/Bucharest"               => "Bucharest",
         | 
| 79 | 
            +
                  "Europe/Budapest"                => "Budapest",
         | 
| 80 | 
            +
                  "America/Araguaina"              => "Buenos Aires",
         | 
| 81 | 
            +
                  "America/Argentina/Buenos_Aires" => "Buenos Aires",
         | 
| 82 | 
            +
                  "America/Argentina/Catamarca"    => "Buenos Aires",
         | 
| 83 | 
            +
                  "America/Argentina/Cordoba"      => "Buenos Aires",
         | 
| 84 | 
            +
                  "America/Argentina/Jujuy"        => "Buenos Aires",
         | 
| 85 | 
            +
                  "America/Argentina/La_Rioja"     => "Buenos Aires",
         | 
| 86 | 
            +
                  "America/Argentina/Mendoza"      => "Buenos Aires",
         | 
| 87 | 
            +
                  "America/Argentina/Rio_Gallegos" => "Buenos Aires",
         | 
| 88 | 
            +
                  "America/Argentina/Salta"        => "Buenos Aires",
         | 
| 89 | 
            +
                  "America/Argentina/San_Juan"     => "Buenos Aires",
         | 
| 90 | 
            +
                  "America/Argentina/Tucuman"      => "Buenos Aires",
         | 
| 91 | 
            +
                  "America/Argentina/Ushuaia"      => "Buenos Aires",
         | 
| 92 | 
            +
                  "America/Bahia"                  => "Buenos Aires",
         | 
| 93 | 
            +
                  "America/Belem"                  => "Buenos Aires",
         | 
| 94 | 
            +
                  "America/Cayenne"                => "Buenos Aires",
         | 
| 95 | 
            +
                  "America/Fortaleza"              => "Buenos Aires",
         | 
| 96 | 
            +
                  "America/Godthab"                => "Buenos Aires",
         | 
| 97 | 
            +
                  "America/Maceio"                 => "Buenos Aires",
         | 
| 98 | 
            +
                  "America/Miquelon"               => "Buenos Aires",
         | 
| 99 | 
            +
                  "America/Montevideo"             => "Buenos Aires",
         | 
| 100 | 
            +
                  "America/Paramaribo"             => "Buenos Aires",
         | 
| 101 | 
            +
                  "America/Recife"                 => "Buenos Aires",
         | 
| 102 | 
            +
                  "America/Santarem"               => "Buenos Aires",
         | 
| 103 | 
            +
                  "America/Sao_Paulo"              => "Buenos Aires",
         | 
| 104 | 
            +
                  "Antarctica/Rothera"             => "Buenos Aires",
         | 
| 105 | 
            +
                  "Africa/Blantyre"                => "Cairo",
         | 
| 106 | 
            +
                  "Africa/Bujumbura"               => "Cairo",
         | 
| 107 | 
            +
                  "Africa/Cairo"                   => "Cairo",
         | 
| 108 | 
            +
                  "Africa/Gaborone"                => "Cairo",
         | 
| 109 | 
            +
                  "Africa/Johannesburg"            => "Cairo",
         | 
| 110 | 
            +
                  "Africa/Kigali"                  => "Cairo",
         | 
| 111 | 
            +
                  "Africa/Lubumbashi"              => "Cairo",
         | 
| 112 | 
            +
                  "Africa/Lusaka"                  => "Cairo",
         | 
| 113 | 
            +
                  "Africa/Maputo"                  => "Cairo",
         | 
| 114 | 
            +
                  "Africa/Maseru"                  => "Cairo",
         | 
| 115 | 
            +
                  "Africa/Mbabane"                 => "Cairo",
         | 
| 116 | 
            +
                  "Africa/Tripoli"                 => "Cairo",
         | 
| 117 | 
            +
                  "Asia/Amman"                     => "Cairo",
         | 
| 118 | 
            +
                  "Asia/Beirut"                    => "Cairo",
         | 
| 119 | 
            +
                  "Asia/Damascus"                  => "Cairo",
         | 
| 120 | 
            +
                  "Asia/Gaza"                      => "Cairo",
         | 
| 121 | 
            +
                  "Asia/Nicosia"                   => "Cairo",
         | 
| 122 | 
            +
                  "Europe/Chisinau"                => "Cairo",
         | 
| 123 | 
            +
                  "Europe/Kaliningrad"             => "Cairo",
         | 
| 124 | 
            +
                  "Europe/Kiev"                    => "Cairo",
         | 
| 125 | 
            +
                  "Europe/Mariehamn"               => "Cairo",
         | 
| 126 | 
            +
                  "Europe/Simferopol"              => "Cairo",
         | 
| 127 | 
            +
                  "Europe/Uzhgorod"                => "Cairo",
         | 
| 128 | 
            +
                  "Europe/Zaporozhye"              => "Cairo",
         | 
| 129 | 
            +
                  "America/Scoresbysund"           => "Cape Verde Is.",
         | 
| 130 | 
            +
                  "Atlantic/Cape_Verde"            => "Cape Verde Is.",
         | 
| 131 | 
            +
                  "America/Caracas"                => "Caracas",
         | 
| 132 | 
            +
                  "Africa/Casablanca"              => "Casablanca",
         | 
| 133 | 
            +
                  "America/Belize"                 => "Central Time (US & Canada)",
         | 
| 134 | 
            +
                  "America/Cancun"                 => "Central Time (US & Canada)",
         | 
| 135 | 
            +
                  "America/Chicago"                => "Central Time (US & Canada)",
         | 
| 136 | 
            +
                  "America/Costa_Rica"             => "Central Time (US & Canada)",
         | 
| 137 | 
            +
                  "America/El_Salvador"            => "Central Time (US & Canada)",
         | 
| 138 | 
            +
                  "America/Guatemala"              => "Central Time (US & Canada)",
         | 
| 139 | 
            +
                  "America/Indiana/Knox"           => "Central Time (US & Canada)",
         | 
| 140 | 
            +
                  "America/Indiana/Tell_City"      => "Central Time (US & Canada)",
         | 
| 141 | 
            +
                  "America/Managua"                => "Central Time (US & Canada)",
         | 
| 142 | 
            +
                  "America/Matamoros"              => "Central Time (US & Canada)",
         | 
| 143 | 
            +
                  "America/Menominee"              => "Central Time (US & Canada)",
         | 
| 144 | 
            +
                  "America/Merida"                 => "Central Time (US & Canada)",
         | 
| 145 | 
            +
                  "America/North_Dakota/Center"    => "Central Time (US & Canada)",
         | 
| 146 | 
            +
                  "America/North_Dakota/New_Salem" => "Central Time (US & Canada)",
         | 
| 147 | 
            +
                  "America/Rainy_River"            => "Central Time (US & Canada)",
         | 
| 148 | 
            +
                  "America/Rankin_Inlet"           => "Central Time (US & Canada)",
         | 
| 149 | 
            +
                  "America/Regina"                 => "Central Time (US & Canada)",
         | 
| 150 | 
            +
                  "America/Swift_Current"          => "Central Time (US & Canada)",
         | 
| 151 | 
            +
                  "America/Tegucigalpa"            => "Central Time (US & Canada)",
         | 
| 152 | 
            +
                  "America/Winnipeg"               => "Central Time (US & Canada)",
         | 
| 153 | 
            +
                  "Pacific/Easter"                 => "Central Time (US & Canada)",
         | 
| 154 | 
            +
                  "Pacific/Galapagos"              => "Central Time (US & Canada)",
         | 
| 155 | 
            +
                  "America/Chihuahua"              => "Chihuahua",
         | 
| 156 | 
            +
                  "Asia/Chongqing"                 => "Chongqing",
         | 
| 157 | 
            +
                  "Europe/Copenhagen"              => "Copenhagen",
         | 
| 158 | 
            +
                  "Australia/Darwin"               => "Darwin",
         | 
| 159 | 
            +
                  "Antarctica/Mawson"              => "Dhaka",
         | 
| 160 | 
            +
                  "Asia/Bishkek"                   => "Dhaka",
         | 
| 161 | 
            +
                  "Asia/Dhaka"                     => "Dhaka",
         | 
| 162 | 
            +
                  "Asia/Karachi"                   => "Dhaka",
         | 
| 163 | 
            +
                  "Asia/Novokuznetsk"              => "Dhaka",
         | 
| 164 | 
            +
                  "Asia/Omsk"                      => "Dhaka",
         | 
| 165 | 
            +
                  "Asia/Qyzylorda"                 => "Dhaka",
         | 
| 166 | 
            +
                  "Asia/Thimphu"                   => "Dhaka",
         | 
| 167 | 
            +
                  "Indian/Chagos"                  => "Dhaka",
         | 
| 168 | 
            +
                  "Europe/Dublin"                  => "Dublin",
         | 
| 169 | 
            +
                  "America/Atikokan"               => "Eastern Time (US & Canada)",
         | 
| 170 | 
            +
                  "America/Cayman"                 => "Eastern Time (US & Canada)",
         | 
| 171 | 
            +
                  "America/Detroit"                => "Eastern Time (US & Canada)",
         | 
| 172 | 
            +
                  "America/Grand_Turk"             => "Eastern Time (US & Canada)",
         | 
| 173 | 
            +
                  "America/Guayaquil"              => "Eastern Time (US & Canada)",
         | 
| 174 | 
            +
                  "America/Havana"                 => "Eastern Time (US & Canada)",
         | 
| 175 | 
            +
                  "America/Indiana/Indianapolis"   => "Eastern Time (US & Canada)",
         | 
| 176 | 
            +
                  "America/Indiana/Marengo"        => "Eastern Time (US & Canada)",
         | 
| 177 | 
            +
                  "America/Indiana/Petersburg"     => "Eastern Time (US & Canada)",
         | 
| 178 | 
            +
                  "America/Indiana/Vevay"          => "Eastern Time (US & Canada)",
         | 
| 179 | 
            +
                  "America/Indiana/Vincennes"      => "Eastern Time (US & Canada)",
         | 
| 180 | 
            +
                  "America/Indiana/Winamac"        => "Eastern Time (US & Canada)",
         | 
| 181 | 
            +
                  "America/Iqaluit"                => "Eastern Time (US & Canada)",
         | 
| 182 | 
            +
                  "America/Jamaica"                => "Eastern Time (US & Canada)",
         | 
| 183 | 
            +
                  "America/Kentucky/Louisville"    => "Eastern Time (US & Canada)",
         | 
| 184 | 
            +
                  "America/Kentucky/Monticello"    => "Eastern Time (US & Canada)",
         | 
| 185 | 
            +
                  "America/Montreal"               => "Eastern Time (US & Canada)",
         | 
| 186 | 
            +
                  "America/Nassau"                 => "Eastern Time (US & Canada)",
         | 
| 187 | 
            +
                  "America/New_York"               => "Eastern Time (US & Canada)",
         | 
| 188 | 
            +
                  "America/Nipigon"                => "Eastern Time (US & Canada)",
         | 
| 189 | 
            +
                  "America/Panama"                 => "Eastern Time (US & Canada)",
         | 
| 190 | 
            +
                  "America/Pangnirtung"            => "Eastern Time (US & Canada)",
         | 
| 191 | 
            +
                  "America/Port-au-Prince"         => "Eastern Time (US & Canada)",
         | 
| 192 | 
            +
                  "America/Resolute"               => "Eastern Time (US & Canada)",
         | 
| 193 | 
            +
                  "America/Thunder_Bay"            => "Eastern Time (US & Canada)",
         | 
| 194 | 
            +
                  "America/Toronto"                => "Eastern Time (US & Canada)",
         | 
| 195 | 
            +
                  "Pacific/Fiji"                   => "Fiji",
         | 
| 196 | 
            +
                  "Pacific/Guam"                   => "Guam",
         | 
| 197 | 
            +
                  "Africa/Harare"                  => "Harare",
         | 
| 198 | 
            +
                  "America/Adak"                   => "Hawaii",
         | 
| 199 | 
            +
                  "Pacific/Fakaofo"                => "Hawaii",
         | 
| 200 | 
            +
                  "Pacific/Honolulu"               => "Hawaii",
         | 
| 201 | 
            +
                  "Pacific/Johnston"               => "Hawaii",
         | 
| 202 | 
            +
                  "Pacific/Rarotonga"              => "Hawaii",
         | 
| 203 | 
            +
                  "Pacific/Tahiti"                 => "Hawaii",
         | 
| 204 | 
            +
                  "Europe/Helsinki"                => "Helsinki",
         | 
| 205 | 
            +
                  "Australia/Hobart"               => "Hobart",
         | 
| 206 | 
            +
                  "Antarctica/Casey"               => "Hong Kong",
         | 
| 207 | 
            +
                  "Asia/Brunei"                    => "Hong Kong",
         | 
| 208 | 
            +
                  "Asia/Choibalsan"                => "Hong Kong",
         | 
| 209 | 
            +
                  "Asia/Harbin"                    => "Hong Kong",
         | 
| 210 | 
            +
                  "Asia/Hong_Kong"                 => "Hong Kong",
         | 
| 211 | 
            +
                  "Asia/Kashgar"                   => "Hong Kong",
         | 
| 212 | 
            +
                  "Asia/Kuching"                   => "Hong Kong",
         | 
| 213 | 
            +
                  "Asia/Macau"                     => "Hong Kong",
         | 
| 214 | 
            +
                  "Asia/Makassar"                  => "Hong Kong",
         | 
| 215 | 
            +
                  "Asia/Manila"                    => "Hong Kong",
         | 
| 216 | 
            +
                  "Asia/Shanghai"                  => "Hong Kong",
         | 
| 217 | 
            +
                  "Asia/Ulaanbaatar"               => "Hong Kong",
         | 
| 218 | 
            +
                  "Asia/Irkutsk"                   => "Irkutsk",
         | 
| 219 | 
            +
                  "Europe/Istanbul"                => "Istanbul",
         | 
| 220 | 
            +
                  "Antarctica/Davis"               => "Jakarta",
         | 
| 221 | 
            +
                  "Asia/Hovd"                      => "Jakarta",
         | 
| 222 | 
            +
                  "Asia/Ho_Chi_Minh"               => "Jakarta",
         | 
| 223 | 
            +
                  "Asia/Jakarta"                   => "Jakarta",
         | 
| 224 | 
            +
                  "Asia/Phnom_Penh"                => "Jakarta",
         | 
| 225 | 
            +
                  "Asia/Pontianak"                 => "Jakarta",
         | 
| 226 | 
            +
                  "Asia/Vientiane"                 => "Jakarta",
         | 
| 227 | 
            +
                  "Indian/Christmas"               => "Jakarta",
         | 
| 228 | 
            +
                  "Asia/Jerusalem"                 => "Jerusalem",
         | 
| 229 | 
            +
                  "Asia/Kabul"                     => "Kabul",
         | 
| 230 | 
            +
                  "Asia/Kamchatka"                 => "Kamchatka",
         | 
| 231 | 
            +
                  "Asia/Aqtau"                     => "Karachi",
         | 
| 232 | 
            +
                  "Asia/Aqtobe"                    => "Karachi",
         | 
| 233 | 
            +
                  "Asia/Ashgabat"                  => "Karachi",
         | 
| 234 | 
            +
                  "Asia/Dushanbe"                  => "Karachi",
         | 
| 235 | 
            +
                  "Asia/Oral"                      => "Karachi",
         | 
| 236 | 
            +
                  "Asia/Samarkand"                 => "Karachi",
         | 
| 237 | 
            +
                  "Asia/Yekaterinburg"             => "Karachi",
         | 
| 238 | 
            +
                  "Indian/Kerguelen"               => "Karachi",
         | 
| 239 | 
            +
                  "Indian/Maldives"                => "Karachi",
         | 
| 240 | 
            +
                  "Asia/Kathmandu"                 => "Kathmandu",
         | 
| 241 | 
            +
                  "Asia/Kolkata"                   => "Kolkata",
         | 
| 242 | 
            +
                  "Asia/Krasnoyarsk"               => "Krasnoyarsk",
         | 
| 243 | 
            +
                  "Asia/Kuala_Lumpur"              => "Kuala Lumpur",
         | 
| 244 | 
            +
                  "Asia/Kuwait"                    => "Kuwait",
         | 
| 245 | 
            +
                  "America/La_Paz"                 => "La Paz",
         | 
| 246 | 
            +
                  "America/Lima"                   => "Lima",
         | 
| 247 | 
            +
                  "Europe/Lisbon"                  => "Lisbon",
         | 
| 248 | 
            +
                  "Europe/Ljubljana"               => "Ljubljana",
         | 
| 249 | 
            +
                  "Africa/Abidjan"                 => "London",
         | 
| 250 | 
            +
                  "Africa/Accra"                   => "London",
         | 
| 251 | 
            +
                  "Africa/Bamako"                  => "London",
         | 
| 252 | 
            +
                  "Africa/Banjul"                  => "London",
         | 
| 253 | 
            +
                  "Africa/Bissau"                  => "London",
         | 
| 254 | 
            +
                  "Africa/Conakry"                 => "London",
         | 
| 255 | 
            +
                  "Africa/Dakar"                   => "London",
         | 
| 256 | 
            +
                  "Africa/El_Aaiun"                => "London",
         | 
| 257 | 
            +
                  "Africa/Freetown"                => "London",
         | 
| 258 | 
            +
                  "Africa/Lome"                    => "London",
         | 
| 259 | 
            +
                  "Africa/Nouakchott"              => "London",
         | 
| 260 | 
            +
                  "Africa/Ouagadougou"             => "London",
         | 
| 261 | 
            +
                  "Africa/Sao_Tome"                => "London",
         | 
| 262 | 
            +
                  "America/Danmarkshavn"           => "London",
         | 
| 263 | 
            +
                  "Antarctica/Vostok"              => "London",
         | 
| 264 | 
            +
                  "Atlantic/Canary"                => "London",
         | 
| 265 | 
            +
                  "Atlantic/Faroe"                 => "London",
         | 
| 266 | 
            +
                  "Atlantic/Madeira"               => "London",
         | 
| 267 | 
            +
                  "Atlantic/Reykjavik"             => "London",
         | 
| 268 | 
            +
                  "Atlantic/St_Helena"             => "London",
         | 
| 269 | 
            +
                  "Europe/Guernsey"                => "London",
         | 
| 270 | 
            +
                  "Europe/Isle_of_Man"             => "London",
         | 
| 271 | 
            +
                  "Europe/Jersey"                  => "London",
         | 
| 272 | 
            +
                  "Europe/London"                  => "London",
         | 
| 273 | 
            +
                  "Europe/Madrid"                  => "Madrid",
         | 
| 274 | 
            +
                  "Asia/Magadan"                   => "Magadan",
         | 
| 275 | 
            +
                  "America/Mazatlan"               => "Mazatlan",
         | 
| 276 | 
            +
                  "Australia/Melbourne"            => "Melbourne",
         | 
| 277 | 
            +
                  "America/Mexico_City"            => "Mexico City",
         | 
| 278 | 
            +
                  "America/Noronha"                => "Mid-Atlantic",
         | 
| 279 | 
            +
                  "Atlantic/South_Georgia"         => "Mid-Atlantic",
         | 
| 280 | 
            +
                  "Europe/Minsk"                   => "Minsk",
         | 
| 281 | 
            +
                  "Africa/Monrovia"                => "Monrovia",
         | 
| 282 | 
            +
                  "America/Monterrey"              => "Monterrey",
         | 
| 283 | 
            +
                  "Africa/Addis_Ababa"             => "Moscow",
         | 
| 284 | 
            +
                  "Africa/Asmara"                  => "Moscow",
         | 
| 285 | 
            +
                  "Africa/Dar_es_Salaam"           => "Moscow",
         | 
| 286 | 
            +
                  "Africa/Djibouti"                => "Moscow",
         | 
| 287 | 
            +
                  "Africa/Kampala"                 => "Moscow",
         | 
| 288 | 
            +
                  "Africa/Khartoum"                => "Moscow",
         | 
| 289 | 
            +
                  "Africa/Mogadishu"               => "Moscow",
         | 
| 290 | 
            +
                  "Antarctica/Syowa"               => "Moscow",
         | 
| 291 | 
            +
                  "Asia/Aden"                      => "Moscow",
         | 
| 292 | 
            +
                  "Asia/Bahrain"                   => "Moscow",
         | 
| 293 | 
            +
                  "Asia/Qatar"                     => "Moscow",
         | 
| 294 | 
            +
                  "Europe/Moscow"                  => "Moscow",
         | 
| 295 | 
            +
                  "Europe/Samara"                  => "Moscow",
         | 
| 296 | 
            +
                  "Indian/Antananarivo"            => "Moscow",
         | 
| 297 | 
            +
                  "Indian/Comoro"                  => "Moscow",
         | 
| 298 | 
            +
                  "Indian/Mayotte"                 => "Moscow",
         | 
| 299 | 
            +
                  "America/Boise"                  => "Mountain Time (US & Canada)",
         | 
| 300 | 
            +
                  "America/Cambridge_Bay"          => "Mountain Time (US & Canada)",
         | 
| 301 | 
            +
                  "America/Dawson_Creek"           => "Mountain Time (US & Canada)",
         | 
| 302 | 
            +
                  "America/Denver"                 => "Mountain Time (US & Canada)",
         | 
| 303 | 
            +
                  "America/Edmonton"               => "Mountain Time (US & Canada)",
         | 
| 304 | 
            +
                  "America/Hermosillo"             => "Mountain Time (US & Canada)",
         | 
| 305 | 
            +
                  "America/Inuvik"                 => "Mountain Time (US & Canada)",
         | 
| 306 | 
            +
                  "America/Ojinaga"                => "Mountain Time (US & Canada)",
         | 
| 307 | 
            +
                  "America/Phoenix"                => "Mountain Time (US & Canada)",
         | 
| 308 | 
            +
                  "America/Shiprock"               => "Mountain Time (US & Canada)",
         | 
| 309 | 
            +
                  "America/Yellowknife"            => "Mountain Time (US & Canada)",
         | 
| 310 | 
            +
                  "Asia/Colombo"                   => "Mumbai",
         | 
| 311 | 
            +
                  "Asia/Muscat"                    => "Muscat",
         | 
| 312 | 
            +
                  "Africa/Nairobi"                 => "Nairobi",
         | 
| 313 | 
            +
                  "America/St_Johns"               => "Newfoundland",
         | 
| 314 | 
            +
                  "Asia/Novosibirsk"               => "Novosibirsk",
         | 
| 315 | 
            +
                  "Pacific/Enderbury"              => "Nuku'alofa",
         | 
| 316 | 
            +
                  "Pacific/Tongatapu"              => "Nuku'alofa",
         | 
| 317 | 
            +
                  "America/Dawson"                 => "Pacific Time (US & Canada)",
         | 
| 318 | 
            +
                  "America/Los_Angeles"            => "Pacific Time (US & Canada)",
         | 
| 319 | 
            +
                  "America/Santa_Isabel"           => "Pacific Time (US & Canada)",
         | 
| 320 | 
            +
                  "America/Vancouver"              => "Pacific Time (US & Canada)",
         | 
| 321 | 
            +
                  "America/Whitehorse"             => "Pacific Time (US & Canada)",
         | 
| 322 | 
            +
                  "Pacific/Pitcairn"               => "Pacific Time (US & Canada)",
         | 
| 323 | 
            +
                  "Africa/Algiers"                 => "Paris",
         | 
| 324 | 
            +
                  "Africa/Bangui"                  => "Paris",
         | 
| 325 | 
            +
                  "Africa/Brazzaville"             => "Paris",
         | 
| 326 | 
            +
                  "Africa/Ceuta"                   => "Paris",
         | 
| 327 | 
            +
                  "Africa/Douala"                  => "Paris",
         | 
| 328 | 
            +
                  "Africa/Kinshasa"                => "Paris",
         | 
| 329 | 
            +
                  "Africa/Lagos"                   => "Paris",
         | 
| 330 | 
            +
                  "Africa/Libreville"              => "Paris",
         | 
| 331 | 
            +
                  "Africa/Luanda"                  => "Paris",
         | 
| 332 | 
            +
                  "Africa/Malabo"                  => "Paris",
         | 
| 333 | 
            +
                  "Africa/Ndjamena"                => "Paris",
         | 
| 334 | 
            +
                  "Africa/Niamey"                  => "Paris",
         | 
| 335 | 
            +
                  "Africa/Porto-Novo"              => "Paris",
         | 
| 336 | 
            +
                  "Africa/Tunis"                   => "Paris",
         | 
| 337 | 
            +
                  "Africa/Windhoek"                => "Paris",
         | 
| 338 | 
            +
                  "Arctic/Longyearbyen"            => "Paris",
         | 
| 339 | 
            +
                  "Europe/Andorra"                 => "Paris",
         | 
| 340 | 
            +
                  "Europe/Gibraltar"               => "Paris",
         | 
| 341 | 
            +
                  "Europe/Luxembourg"              => "Paris",
         | 
| 342 | 
            +
                  "Europe/Malta"                   => "Paris",
         | 
| 343 | 
            +
                  "Europe/Monaco"                  => "Paris",
         | 
| 344 | 
            +
                  "Europe/Oslo"                    => "Paris",
         | 
| 345 | 
            +
                  "Europe/Paris"                   => "Paris",
         | 
| 346 | 
            +
                  "Europe/Podgorica"               => "Paris",
         | 
| 347 | 
            +
                  "Europe/San_Marino"              => "Paris",
         | 
| 348 | 
            +
                  "Europe/Tirane"                  => "Paris",
         | 
| 349 | 
            +
                  "Europe/Vaduz"                   => "Paris",
         | 
| 350 | 
            +
                  "Europe/Vatican"                 => "Paris",
         | 
| 351 | 
            +
                  "Europe/Zurich"                  => "Paris",
         | 
| 352 | 
            +
                  "Australia/Perth"                => "Perth",
         | 
| 353 | 
            +
                  "Pacific/Port_Moresby"           => "Port Moresby",
         | 
| 354 | 
            +
                  "Europe/Prague"                  => "Prague",
         | 
| 355 | 
            +
                  "Asia/Rangoon"                   => "Rangoon",
         | 
| 356 | 
            +
                  "Indian/Cocos"                   => "Rangoon",
         | 
| 357 | 
            +
                  "Europe/Riga"                    => "Riga",
         | 
| 358 | 
            +
                  "Asia/Riyadh"                    => "Riyadh",
         | 
| 359 | 
            +
                  "Europe/Rome"                    => "Rome",
         | 
| 360 | 
            +
                  "Pacific/Apia"                   => "Samoa",
         | 
| 361 | 
            +
                  "Pacific/Midway"                 => "Samoa",
         | 
| 362 | 
            +
                  "Pacific/Niue"                   => "Samoa",
         | 
| 363 | 
            +
                  "Pacific/Pago_Pago"              => "Samoa",
         | 
| 364 | 
            +
                  "America/Santiago"               => "Santiago",
         | 
| 365 | 
            +
                  "Europe/Sarajevo"                => "Sarajevo",
         | 
| 366 | 
            +
                  "Asia/Seoul"                     => "Seoul",
         | 
| 367 | 
            +
                  "Asia/Singapore"                 => "Singapore",
         | 
| 368 | 
            +
                  "Europe/Skopje"                  => "Skopje",
         | 
| 369 | 
            +
                  "Europe/Sofia"                   => "Sofia",
         | 
| 370 | 
            +
                  "Asia/Anadyr"                    => "Solomon Is.",
         | 
| 371 | 
            +
                  "Pacific/Efate"                  => "Solomon Is.",
         | 
| 372 | 
            +
                  "Pacific/Guadalcanal"            => "Solomon Is.",
         | 
| 373 | 
            +
                  "Pacific/Kosrae"                 => "Solomon Is.",
         | 
| 374 | 
            +
                  "Pacific/Noumea"                 => "Solomon Is.",
         | 
| 375 | 
            +
                  "Pacific/Ponape"                 => "Solomon Is.",
         | 
| 376 | 
            +
                  "Europe/Stockholm"               => "Stockholm",
         | 
| 377 | 
            +
                  "Antarctica/DumontDUrville"      => "Sydney",
         | 
| 378 | 
            +
                  "Asia/Sakhalin"                  => "Sydney",
         | 
| 379 | 
            +
                  "Australia/Currie"               => "Sydney",
         | 
| 380 | 
            +
                  "Australia/Lindeman"             => "Sydney",
         | 
| 381 | 
            +
                  "Australia/Sydney"               => "Sydney",
         | 
| 382 | 
            +
                  "Pacific/Saipan"                 => "Sydney",
         | 
| 383 | 
            +
                  "Pacific/Truk"                   => "Sydney",
         | 
| 384 | 
            +
                  "Asia/Taipei"                    => "Taipei",
         | 
| 385 | 
            +
                  "Europe/Tallinn"                 => "Tallinn",
         | 
| 386 | 
            +
                  "Asia/Tashkent"                  => "Tashkent",
         | 
| 387 | 
            +
                  "Asia/Tbilisi"                   => "Tbilisi",
         | 
| 388 | 
            +
                  "Asia/Tehran"                    => "Tehran",
         | 
| 389 | 
            +
                  "America/Tijuana"                => "Tijuana",
         | 
| 390 | 
            +
                  "Asia/Dili"                      => "Tokyo",
         | 
| 391 | 
            +
                  "Asia/Jayapura"                  => "Tokyo",
         | 
| 392 | 
            +
                  "Asia/Pyongyang"                 => "Tokyo",
         | 
| 393 | 
            +
                  "Asia/Tokyo"                     => "Tokyo",
         | 
| 394 | 
            +
                  "Pacific/Palau"                  => "Tokyo",
         | 
| 395 | 
            +
                  "Asia/Urumqi"                    => "Urumqi",
         | 
| 396 | 
            +
                  "Europe/Vienna"                  => "Vienna",
         | 
| 397 | 
            +
                  "Europe/Vilnius"                 => "Vilnius",
         | 
| 398 | 
            +
                  "Asia/Vladivostok"               => "Vladivostok",
         | 
| 399 | 
            +
                  "Europe/Volgograd"               => "Volgograd",
         | 
| 400 | 
            +
                  "Europe/Warsaw"                  => "Warsaw",
         | 
| 401 | 
            +
                  "Asia/Yakutsk"                   => "Yakutsk",
         | 
| 402 | 
            +
                  "Asia/Yerevan"                   => "Yerevan",
         | 
| 403 | 
            +
                  "Europe/Zagreb"                  => "Zagreb",
         | 
| 404 | 
            +
                }
         | 
| 405 | 
            +
             | 
| 406 | 
            +
                def self.format(zone)
         | 
| 407 | 
            +
                  TIMEZONE_MAPPING[zone]
         | 
| 408 | 
            +
                end
         | 
| 409 | 
            +
              end
         | 
| 410 | 
            +
            end
         |