tzinfo 0.1.1 → 0.1.2
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.
Potentially problematic release.
This version of tzinfo might be problematic. Click here for more details.
- data/CHANGES +17 -0
- data/README +9 -6
- data/Rakefile +90 -6
- data/lib/tzinfo.rb +5 -0
- data/lib/tzinfo/countries/CA.rb +1 -0
- data/lib/tzinfo/countries/US.rb +2 -0
- data/lib/tzinfo/definitions/America/Cambridge_Bay.rb +79 -79
- data/lib/tzinfo/definitions/America/Glace_Bay.rb +79 -79
- data/lib/tzinfo/definitions/America/Halifax.rb +79 -79
- data/lib/tzinfo/definitions/America/Indiana/Knox.rb +81 -82
- data/lib/tzinfo/definitions/America/Indiana/Petersburg.rb +146 -0
- data/lib/tzinfo/definitions/America/Indiana/Vincennes.rb +133 -0
- data/lib/tzinfo/definitions/America/Iqaluit.rb +79 -79
- data/lib/tzinfo/definitions/America/Miquelon.rb +79 -79
- data/lib/tzinfo/definitions/America/Moncton.rb +239 -0
- data/lib/tzinfo/definitions/America/Montreal.rb +79 -79
- data/lib/tzinfo/definitions/America/Nipigon.rb +79 -79
- data/lib/tzinfo/definitions/America/Pangnirtung.rb +79 -79
- data/lib/tzinfo/definitions/America/Rainy_River.rb +79 -79
- data/lib/tzinfo/definitions/America/Rankin_Inlet.rb +79 -79
- data/lib/tzinfo/definitions/America/Thunder_Bay.rb +79 -79
- data/lib/tzinfo/definitions/America/Toronto.rb +79 -79
- data/lib/tzinfo/definitions/America/Winnipeg.rb +79 -79
- data/lib/tzinfo/definitions/Asia/Gaza.rb +82 -82
- data/lib/tzinfo/definitions/CST6CDT.rb +167 -2
- data/lib/tzinfo/definitions/EST.rb +3 -2
- data/lib/tzinfo/definitions/EST5EDT.rb +167 -2
- data/lib/tzinfo/definitions/HST.rb +3 -2
- data/lib/tzinfo/definitions/MST.rb +3 -2
- data/lib/tzinfo/definitions/MST7MDT.rb +167 -2
- data/lib/tzinfo/definitions/PST8PDT.rb +167 -2
- data/lib/tzinfo/timezone.rb +10 -0
- data/test/tc_timezone.rb +16 -2
- metadata +6 -7
    
        data/CHANGES
    CHANGED
    
    | @@ -1,3 +1,19 @@ | |
| 1 | 
            +
            Version 0.1.2 (tzdata v2006a) - 5-Feb-2006
         | 
| 2 | 
            +
            ------------------------------------------
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            * Add lib directory to the load path when tzinfo is required. Makes it easier
         | 
| 5 | 
            +
              to use tzinfo gem when unpacked to vendor directory in rails. 
         | 
| 6 | 
            +
            * Updated to tzdata version 2006a 
         | 
| 7 | 
            +
              (http://article.gmane.org/gmane.comp.time.tz/738).
         | 
| 8 | 
            +
            * build_tz_classes rake task now handles running svn add and svn delete as new 
         | 
| 9 | 
            +
              timezones and countries are added and old ones are removed.
         | 
| 10 | 
            +
            * Return a better error when attempting to use a Timezone instance that was
         | 
| 11 | 
            +
              constructed with Timezone.new(nil). This will occur when using Rails'
         | 
| 12 | 
            +
              composed_of. When the timezone identifier in the database is null, attempting
         | 
| 13 | 
            +
              to use the Timezone will now result in an UnknownTimezone exception rather 
         | 
| 14 | 
            +
              than a NameError.
         | 
| 15 | 
            +
             | 
| 16 | 
            +
             | 
| 1 17 | 
             
            Version 0.1.1 (tzdata v2005q) - 18-Dec-2005
         | 
| 2 18 | 
             
            -------------------------------------------
         | 
| 3 19 |  | 
| @@ -5,6 +21,7 @@ Version 0.1.1 (tzdata v2005q) - 18-Dec-2005 | |
| 5 21 | 
             
              work again.
         | 
| 6 22 | 
             
            * Updated to tzdata version 2005q.
         | 
| 7 23 |  | 
| 24 | 
            +
             | 
| 8 25 | 
             
            Version 0.1.0 (tzdata v2005n) - 27-Nov-2005
         | 
| 9 26 | 
             
            -------------------------------------------
         | 
| 10 27 |  | 
    
        data/README
    CHANGED
    
    | @@ -1,6 +1,7 @@ | |
| 1 1 | 
             
            = TZInfo -- Daylight-savings aware timezone support for Ruby
         | 
| 2 2 |  | 
| 3 | 
            -
            TZInfo uses the tz database  | 
| 3 | 
            +
            TZInfo[http://tzinfo.rubyforge.org] uses the tz database 
         | 
| 4 | 
            +
            (http://www.twinsun.com/tz/tz-link.htm) to provide
         | 
| 4 5 | 
             
            daylight-savings aware transformations between times in different timezones.
         | 
| 5 6 | 
             
            This is the same database as used for zoneinfo on Unix machines.
         | 
| 6 7 |  | 
| @@ -46,7 +47,7 @@ gets all the Timezone identifiers for the US: | |
| 46 47 | 
             
              timezones = us.zone_identifiers
         | 
| 47 48 |  | 
| 48 49 | 
             
            The above covers the most common uses of Timezone and Country. For more detail,
         | 
| 49 | 
            -
            see  | 
| 50 | 
            +
            see the API documentation for the individual classes.
         | 
| 50 51 |  | 
| 51 52 |  | 
| 52 53 | 
             
            == Download
         | 
| @@ -55,14 +56,14 @@ The latest version of TZInfo can be found at | |
| 55 56 |  | 
| 56 57 | 
             
            * http://rubyforge.org/frs/?group_id=894
         | 
| 57 58 |  | 
| 58 | 
            -
             | 
| 59 | 
            +
            API documentation can be found at 
         | 
| 59 60 |  | 
| 60 61 | 
             
            * http://tzinfo.rubyforge.org/doc/
         | 
| 61 62 |  | 
| 62 63 |  | 
| 63 64 | 
             
            == Installation
         | 
| 64 65 |  | 
| 65 | 
            -
            The preferred method of installing TZInfo is through  | 
| 66 | 
            +
            The preferred method of installing TZInfo is through the GEM file (RubyGems[http://docs.rubygems.org/] required):
         | 
| 66 67 |  | 
| 67 68 | 
             
              % gem install tzinfo-x.y.z.gem
         | 
| 68 69 |  | 
| @@ -78,5 +79,7 @@ TZInfo is released under the MIT[http://opensource.org/licenses/mit-license.html | |
| 78 79 |  | 
| 79 80 | 
             
            == Support
         | 
| 80 81 |  | 
| 81 | 
            -
            Please  | 
| 82 | 
            -
            any suggestions.
         | 
| 82 | 
            +
            Please post to the TZInfo Users mailing list (http://rubyforge.org/mailman/listinfo/tzinfo-users)
         | 
| 83 | 
            +
            if you require assistance or have any suggestions.
         | 
| 84 | 
            +
             | 
| 85 | 
            +
            Alternatively, you can contact the author Philip Ross directly at phil.ross@gmail.com.
         | 
    
        data/Rakefile
    CHANGED
    
    | @@ -2,7 +2,7 @@ | |
| 2 2 | 
             
            #
         | 
| 3 3 | 
             
            # rake test - Runs all test cases.
         | 
| 4 4 | 
             
            # rake package - Runs test cases and builds packages for distribution.
         | 
| 5 | 
            -
            # rake rdoc - Builds API documentation  | 
| 5 | 
            +
            # rake rdoc - Builds API documentation in doc dir.
         | 
| 6 6 | 
             
            # rake build_tz_classes - Builds Timezone and Country classes. Expects to find
         | 
| 7 7 | 
             
            #   source data in ../data.
         | 
| 8 8 | 
             
            # rake build_tz_class zone=Zone/Name - Builds single Timezone class. Expects to
         | 
| @@ -12,20 +12,26 @@ require 'rake' | |
| 12 12 | 
             
            require 'rake/testtask'
         | 
| 13 13 | 
             
            require 'rake/rdoctask'
         | 
| 14 14 | 
             
            require 'rake/gempackagetask'
         | 
| 15 | 
            +
            require 'fileutils'
         | 
| 15 16 |  | 
| 16 | 
            -
            PKG_VERSION = "0.1. | 
| 17 | 
            +
            PKG_VERSION = "0.1.2"
         | 
| 17 18 | 
             
            PKG_FILES = FileList[
         | 
| 18 | 
            -
              ' | 
| 19 | 
            +
              'CHANGES',
         | 
| 20 | 
            +
              'LICENSE',
         | 
| 21 | 
            +
              'Rakefile',
         | 
| 22 | 
            +
              'README',
         | 
| 19 23 | 
             
              'bin/**/*',
         | 
| 20 24 | 
             
              'lib/**/*',
         | 
| 21 25 | 
             
              'test/**/*'
         | 
| 22 26 | 
             
            ]
         | 
| 23 27 |  | 
| 28 | 
            +
            BUILD_TZ_CLASSES_DIR = 'lib/tzinfo.build_tz_classes'
         | 
| 29 | 
            +
             | 
| 24 30 | 
             
            SPEC = Gem::Specification.new do |s|
         | 
| 25 31 | 
             
              s.name = "tzinfo"
         | 
| 26 32 | 
             
              s.version = PKG_VERSION
         | 
| 27 33 | 
             
              s.author = "Philip Ross"
         | 
| 28 | 
            -
              s.email = " | 
| 34 | 
            +
              s.email = "phil.ross@gmail.com"
         | 
| 29 35 | 
             
              s.homepage = "http://tzinfo.rubyforge.org/"
         | 
| 30 36 | 
             
              s.platform = Gem::Platform::RUBY
         | 
| 31 37 | 
             
              s.summary = "Daylight-savings aware timezone library"  
         | 
| @@ -62,8 +68,86 @@ end | |
| 62 68 |  | 
| 63 69 | 
             
            task :build_tz_classes do
         | 
| 64 70 | 
             
              require 'lib/tzinfo/tzdataparser'
         | 
| 65 | 
            -
               | 
| 66 | 
            -
               | 
| 71 | 
            +
              
         | 
| 72 | 
            +
              FileUtils.mkdir_p(BUILD_TZ_CLASSES_DIR)
         | 
| 73 | 
            +
              begin  
         | 
| 74 | 
            +
                p = TZInfo::TZDataParser.new('../data', BUILD_TZ_CLASSES_DIR)
         | 
| 75 | 
            +
                p.execute
         | 
| 76 | 
            +
                
         | 
| 77 | 
            +
                ['countries', 'definitions'].each {|dir|
         | 
| 78 | 
            +
                  sync_svn("#{BUILD_TZ_CLASSES_DIR}/#{dir}", "lib/tzinfo/#{dir}")
         | 
| 79 | 
            +
                }        
         | 
| 80 | 
            +
              ensure
         | 
| 81 | 
            +
                FileUtils.rm_rf(BUILD_TZ_CLASSES_DIR)
         | 
| 82 | 
            +
              end
         | 
| 83 | 
            +
            end
         | 
| 84 | 
            +
             | 
| 85 | 
            +
            def sync_svn(source_dir, target_dir)
         | 
| 86 | 
            +
              puts "SVN Sync from #{source_dir} to #{target_dir}"
         | 
| 87 | 
            +
             | 
| 88 | 
            +
              # Assumes a directory will never turn into a file and vice-versa
         | 
| 89 | 
            +
              # (files will all end in .rb, directories won't).
         | 
| 90 | 
            +
              # SVN wouldn't allow the change in a single commit anyway.
         | 
| 91 | 
            +
             | 
| 92 | 
            +
              source_entries, target_entries = [source_dir, target_dir].collect {|dir|
         | 
| 93 | 
            +
                Dir.entries(dir).delete_if {|entry| entry =~ /^\.(\.?|svn)$/}.sort
         | 
| 94 | 
            +
              }
         | 
| 95 | 
            +
              
         | 
| 96 | 
            +
              until source_entries.empty? || target_entries.empty?          
         | 
| 97 | 
            +
                if source_entries.last == target_entries.last      
         | 
| 98 | 
            +
                  source_file = "#{source_dir}/#{source_entries.last}"
         | 
| 99 | 
            +
                  target_file = "#{target_dir}/#{target_entries.last}"
         | 
| 100 | 
            +
                
         | 
| 101 | 
            +
                  if File.directory?(source_file)
         | 
| 102 | 
            +
                    sync_svn(source_file, target_file)
         | 
| 103 | 
            +
                  else
         | 
| 104 | 
            +
                    FileUtils.cp(source_file, target_file)
         | 
| 105 | 
            +
                  end     
         | 
| 106 | 
            +
                
         | 
| 107 | 
            +
                  source_entries.pop
         | 
| 108 | 
            +
                  target_entries.pop
         | 
| 109 | 
            +
                elsif source_entries.last < target_entries.last
         | 
| 110 | 
            +
                  sync_svn_only_in_target(target_dir, target_entries)
         | 
| 111 | 
            +
                else      
         | 
| 112 | 
            +
                  sync_svn_only_in_source(source_dir, target_dir, source_entries)
         | 
| 113 | 
            +
                end    
         | 
| 114 | 
            +
              end
         | 
| 115 | 
            +
              
         | 
| 116 | 
            +
              until target_entries.empty?
         | 
| 117 | 
            +
                sync_svn_only_in_target(target_dir, target_entries)
         | 
| 118 | 
            +
              end
         | 
| 119 | 
            +
              
         | 
| 120 | 
            +
              until source_entries.empty?
         | 
| 121 | 
            +
                sync_svn_only_in_source(source_dir, target_dir, source_entries)
         | 
| 122 | 
            +
              end
         | 
| 123 | 
            +
            end
         | 
| 124 | 
            +
             | 
| 125 | 
            +
            def sync_svn_only_in_target(target_dir, target_entries)
         | 
| 126 | 
            +
              target_file = "#{target_dir}/#{target_entries.last}"  
         | 
| 127 | 
            +
              exec_svn "delete \"#{target_file}\""
         | 
| 128 | 
            +
              target_entries.pop
         | 
| 129 | 
            +
            end
         | 
| 130 | 
            +
             | 
| 131 | 
            +
            def sync_svn_only_in_source(source_dir, target_dir, source_entries)
         | 
| 132 | 
            +
              source_file = "#{source_dir}/#{source_entries.last}"
         | 
| 133 | 
            +
              target_file = "#{target_dir}/#{source_entries.last}"
         | 
| 134 | 
            +
                  
         | 
| 135 | 
            +
              if File.directory?(source_file)
         | 
| 136 | 
            +
                Dir.mkdir(target_file)
         | 
| 137 | 
            +
                exec_svn "add \"#{target_file}\""    
         | 
| 138 | 
            +
                sync_svn(source_file, target_file)
         | 
| 139 | 
            +
              else
         | 
| 140 | 
            +
                FileUtils.cp(source_file, target_file)
         | 
| 141 | 
            +
                exec_svn "add \"#{target_file}\""
         | 
| 142 | 
            +
              end
         | 
| 143 | 
            +
              
         | 
| 144 | 
            +
              source_entries.pop
         | 
| 145 | 
            +
            end
         | 
| 146 | 
            +
             | 
| 147 | 
            +
            def exec_svn(params)
         | 
| 148 | 
            +
              puts "svn #{params}"
         | 
| 149 | 
            +
              `svn #{params}`
         | 
| 150 | 
            +
              raise "SVN exited with status #$?" if $? != 0  
         | 
| 67 151 | 
             
            end
         | 
| 68 152 |  | 
| 69 153 | 
             
            task :build_tz_class do
         | 
    
        data/lib/tzinfo.rb
    CHANGED
    
    | @@ -20,6 +20,11 @@ | |
| 20 20 | 
             
            # THE SOFTWARE.
         | 
| 21 21 | 
             
            #++
         | 
| 22 22 |  | 
| 23 | 
            +
            # Add the directory containing this file to the start of the load path if it
         | 
| 24 | 
            +
            # isn't there already.
         | 
| 25 | 
            +
            $:.unshift(File.dirname(__FILE__)) unless
         | 
| 26 | 
            +
              $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
         | 
| 27 | 
            +
             | 
| 23 28 | 
             
            require 'tzinfo/timezone'
         | 
| 24 29 | 
             
            require 'tzinfo/country'
         | 
| 25 30 | 
             
            require 'tzinfo/tzdataparser'
         | 
    
        data/lib/tzinfo/countries/CA.rb
    CHANGED
    
    
    
        data/lib/tzinfo/countries/US.rb
    CHANGED
    
    | @@ -16,7 +16,9 @@ add_zone('America/Shiprock') | |
| 16 16 | 
             
            add_zone('America/Menominee')
         | 
| 17 17 | 
             
            add_zone('America/Indiana/Marengo')
         | 
| 18 18 | 
             
            add_zone('America/Phoenix')
         | 
| 19 | 
            +
            add_zone('America/Indiana/Petersburg')
         | 
| 19 20 | 
             
            add_zone('America/Indiana/Vevay')
         | 
| 21 | 
            +
            add_zone('America/Indiana/Vincennes')
         | 
| 20 22 | 
             
            add_zone('America/Boise')
         | 
| 21 23 | 
             
            add_zone('America/Adak')
         | 
| 22 24 | 
             
            add_zone('America/Indiana/Knox')
         | 
| @@ -69,85 +69,85 @@ add_period(2004,10) {TimezonePeriod.new(DateTime.new0(Rational.new!(14719859,6), | |
| 69 69 | 
             
            add_period(2005,4) {TimezonePeriod.new(DateTime.new0(Rational.new!(19627711,8),0,Date::ITALY),DateTime.new0(Rational.new!(14722043,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 70 70 | 
             
            add_period(2005,10) {TimezonePeriod.new(DateTime.new0(Rational.new!(14722043,6),0,Date::ITALY),DateTime.new0(Rational.new!(19630623,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 71 71 | 
             
            add_period(2006,4) {TimezonePeriod.new(DateTime.new0(Rational.new!(19630623,8),0,Date::ITALY),DateTime.new0(Rational.new!(14724227,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 72 | 
            -
            add_period(2006,10) {TimezonePeriod.new(DateTime.new0(Rational.new!(14724227,6),0,Date::ITALY),DateTime.new0(Rational.new!( | 
| 73 | 
            -
            add_period(2007, | 
| 74 | 
            -
            add_period(2007, | 
| 75 | 
            -
            add_period(2008, | 
| 76 | 
            -
            add_period(2008, | 
| 77 | 
            -
            add_period(2009, | 
| 78 | 
            -
            add_period(2009, | 
| 79 | 
            -
            add_period(2010, | 
| 80 | 
            -
            add_period(2010, | 
| 81 | 
            -
            add_period(2011, | 
| 82 | 
            -
            add_period(2011, | 
| 83 | 
            -
            add_period(2012, | 
| 84 | 
            -
            add_period(2012, | 
| 85 | 
            -
            add_period(2013, | 
| 86 | 
            -
            add_period(2013, | 
| 87 | 
            -
            add_period(2014, | 
| 88 | 
            -
            add_period(2014, | 
| 89 | 
            -
            add_period(2015, | 
| 90 | 
            -
            add_period(2015, | 
| 91 | 
            -
            add_period(2016, | 
| 92 | 
            -
            add_period(2016, | 
| 93 | 
            -
            add_period(2017, | 
| 94 | 
            -
            add_period(2017, | 
| 95 | 
            -
            add_period(2018, | 
| 96 | 
            -
            add_period(2018, | 
| 97 | 
            -
            add_period(2019, | 
| 98 | 
            -
            add_period(2019, | 
| 99 | 
            -
            add_period(2020, | 
| 100 | 
            -
            add_period(2020, | 
| 101 | 
            -
            add_period(2021, | 
| 102 | 
            -
            add_period(2021, | 
| 103 | 
            -
            add_period(2022, | 
| 104 | 
            -
            add_period(2022, | 
| 105 | 
            -
            add_period(2023, | 
| 106 | 
            -
            add_period(2023, | 
| 107 | 
            -
            add_period(2024, | 
| 108 | 
            -
            add_period(2024, | 
| 109 | 
            -
            add_period(2025, | 
| 110 | 
            -
            add_period(2025, | 
| 111 | 
            -
            add_period(2026, | 
| 112 | 
            -
            add_period(2026, | 
| 113 | 
            -
            add_period(2027, | 
| 114 | 
            -
            add_period(2027, | 
| 115 | 
            -
            add_period(2028, | 
| 116 | 
            -
            add_period(2028, | 
| 117 | 
            -
            add_period(2029, | 
| 118 | 
            -
            add_period(2029, | 
| 119 | 
            -
            add_period(2030, | 
| 120 | 
            -
            add_period(2030, | 
| 121 | 
            -
            add_period(2031, | 
| 122 | 
            -
            add_period(2031, | 
| 123 | 
            -
            add_period(2032, | 
| 124 | 
            -
            add_period(2032, | 
| 125 | 
            -
            add_period(2033, | 
| 126 | 
            -
            add_period(2033, | 
| 127 | 
            -
            add_period(2034, | 
| 128 | 
            -
            add_period(2034, | 
| 129 | 
            -
            add_period(2035, | 
| 130 | 
            -
            add_period(2035, | 
| 131 | 
            -
            add_period(2036, | 
| 132 | 
            -
            add_period(2036, | 
| 133 | 
            -
            add_period(2037, | 
| 134 | 
            -
            add_period(2037, | 
| 135 | 
            -
            add_period(2038, | 
| 136 | 
            -
            add_period(2038, | 
| 137 | 
            -
            add_period(2039, | 
| 138 | 
            -
            add_period(2039, | 
| 139 | 
            -
            add_period(2040, | 
| 140 | 
            -
            add_period(2040, | 
| 141 | 
            -
            add_period(2041, | 
| 142 | 
            -
            add_period(2041, | 
| 143 | 
            -
            add_period(2042, | 
| 144 | 
            -
            add_period(2042, | 
| 145 | 
            -
            add_period(2043, | 
| 146 | 
            -
            add_period(2043, | 
| 147 | 
            -
            add_period(2044, | 
| 148 | 
            -
            add_period(2044, | 
| 149 | 
            -
            add_period(2045, | 
| 150 | 
            -
            add_period(2045, | 
| 72 | 
            +
            add_period(2006,10) {TimezonePeriod.new(DateTime.new0(Rational.new!(14724227,6),0,Date::ITALY),DateTime.new0(Rational.new!(19633367,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 73 | 
            +
            add_period(2007,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19633367,8),0,Date::ITALY),DateTime.new0(Rational.new!(14726453,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 74 | 
            +
            add_period(2007,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14726453,6),0,Date::ITALY),DateTime.new0(Rational.new!(19636279,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 75 | 
            +
            add_period(2008,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19636279,8),0,Date::ITALY),DateTime.new0(Rational.new!(14728637,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 76 | 
            +
            add_period(2008,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14728637,6),0,Date::ITALY),DateTime.new0(Rational.new!(19639191,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 77 | 
            +
            add_period(2009,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19639191,8),0,Date::ITALY),DateTime.new0(Rational.new!(14730821,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 78 | 
            +
            add_period(2009,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14730821,6),0,Date::ITALY),DateTime.new0(Rational.new!(19642159,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 79 | 
            +
            add_period(2010,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19642159,8),0,Date::ITALY),DateTime.new0(Rational.new!(14733047,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 80 | 
            +
            add_period(2010,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14733047,6),0,Date::ITALY),DateTime.new0(Rational.new!(19645071,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 81 | 
            +
            add_period(2011,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19645071,8),0,Date::ITALY),DateTime.new0(Rational.new!(14735231,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 82 | 
            +
            add_period(2011,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14735231,6),0,Date::ITALY),DateTime.new0(Rational.new!(19647983,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 83 | 
            +
            add_period(2012,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19647983,8),0,Date::ITALY),DateTime.new0(Rational.new!(14737415,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 84 | 
            +
            add_period(2012,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14737415,6),0,Date::ITALY),DateTime.new0(Rational.new!(19650895,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 85 | 
            +
            add_period(2013,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19650895,8),0,Date::ITALY),DateTime.new0(Rational.new!(14739599,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 86 | 
            +
            add_period(2013,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14739599,6),0,Date::ITALY),DateTime.new0(Rational.new!(19653807,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 87 | 
            +
            add_period(2014,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19653807,8),0,Date::ITALY),DateTime.new0(Rational.new!(14741783,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 88 | 
            +
            add_period(2014,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14741783,6),0,Date::ITALY),DateTime.new0(Rational.new!(19656719,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 89 | 
            +
            add_period(2015,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19656719,8),0,Date::ITALY),DateTime.new0(Rational.new!(14743967,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 90 | 
            +
            add_period(2015,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14743967,6),0,Date::ITALY),DateTime.new0(Rational.new!(19659687,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 91 | 
            +
            add_period(2016,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19659687,8),0,Date::ITALY),DateTime.new0(Rational.new!(14746193,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 92 | 
            +
            add_period(2016,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14746193,6),0,Date::ITALY),DateTime.new0(Rational.new!(19662599,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 93 | 
            +
            add_period(2017,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19662599,8),0,Date::ITALY),DateTime.new0(Rational.new!(14748377,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 94 | 
            +
            add_period(2017,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14748377,6),0,Date::ITALY),DateTime.new0(Rational.new!(19665511,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 95 | 
            +
            add_period(2018,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19665511,8),0,Date::ITALY),DateTime.new0(Rational.new!(14750561,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 96 | 
            +
            add_period(2018,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14750561,6),0,Date::ITALY),DateTime.new0(Rational.new!(19668423,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 97 | 
            +
            add_period(2019,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19668423,8),0,Date::ITALY),DateTime.new0(Rational.new!(14752745,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 98 | 
            +
            add_period(2019,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14752745,6),0,Date::ITALY),DateTime.new0(Rational.new!(19671335,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 99 | 
            +
            add_period(2020,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19671335,8),0,Date::ITALY),DateTime.new0(Rational.new!(14754929,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 100 | 
            +
            add_period(2020,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14754929,6),0,Date::ITALY),DateTime.new0(Rational.new!(19674303,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 101 | 
            +
            add_period(2021,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19674303,8),0,Date::ITALY),DateTime.new0(Rational.new!(14757155,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 102 | 
            +
            add_period(2021,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14757155,6),0,Date::ITALY),DateTime.new0(Rational.new!(19677215,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 103 | 
            +
            add_period(2022,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19677215,8),0,Date::ITALY),DateTime.new0(Rational.new!(14759339,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 104 | 
            +
            add_period(2022,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14759339,6),0,Date::ITALY),DateTime.new0(Rational.new!(19680127,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 105 | 
            +
            add_period(2023,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19680127,8),0,Date::ITALY),DateTime.new0(Rational.new!(14761523,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 106 | 
            +
            add_period(2023,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14761523,6),0,Date::ITALY),DateTime.new0(Rational.new!(19683039,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 107 | 
            +
            add_period(2024,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19683039,8),0,Date::ITALY),DateTime.new0(Rational.new!(14763707,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 108 | 
            +
            add_period(2024,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14763707,6),0,Date::ITALY),DateTime.new0(Rational.new!(19685951,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 109 | 
            +
            add_period(2025,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19685951,8),0,Date::ITALY),DateTime.new0(Rational.new!(14765891,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 110 | 
            +
            add_period(2025,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14765891,6),0,Date::ITALY),DateTime.new0(Rational.new!(19688863,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 111 | 
            +
            add_period(2026,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19688863,8),0,Date::ITALY),DateTime.new0(Rational.new!(14768075,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 112 | 
            +
            add_period(2026,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14768075,6),0,Date::ITALY),DateTime.new0(Rational.new!(19691831,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 113 | 
            +
            add_period(2027,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19691831,8),0,Date::ITALY),DateTime.new0(Rational.new!(14770301,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 114 | 
            +
            add_period(2027,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14770301,6),0,Date::ITALY),DateTime.new0(Rational.new!(19694743,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 115 | 
            +
            add_period(2028,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19694743,8),0,Date::ITALY),DateTime.new0(Rational.new!(14772485,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 116 | 
            +
            add_period(2028,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14772485,6),0,Date::ITALY),DateTime.new0(Rational.new!(19697655,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 117 | 
            +
            add_period(2029,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19697655,8),0,Date::ITALY),DateTime.new0(Rational.new!(14774669,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 118 | 
            +
            add_period(2029,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14774669,6),0,Date::ITALY),DateTime.new0(Rational.new!(19700567,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 119 | 
            +
            add_period(2030,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19700567,8),0,Date::ITALY),DateTime.new0(Rational.new!(14776853,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 120 | 
            +
            add_period(2030,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14776853,6),0,Date::ITALY),DateTime.new0(Rational.new!(19703479,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 121 | 
            +
            add_period(2031,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19703479,8),0,Date::ITALY),DateTime.new0(Rational.new!(14779037,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 122 | 
            +
            add_period(2031,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14779037,6),0,Date::ITALY),DateTime.new0(Rational.new!(19706447,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 123 | 
            +
            add_period(2032,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19706447,8),0,Date::ITALY),DateTime.new0(Rational.new!(14781263,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 124 | 
            +
            add_period(2032,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14781263,6),0,Date::ITALY),DateTime.new0(Rational.new!(19709359,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 125 | 
            +
            add_period(2033,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19709359,8),0,Date::ITALY),DateTime.new0(Rational.new!(14783447,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 126 | 
            +
            add_period(2033,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14783447,6),0,Date::ITALY),DateTime.new0(Rational.new!(19712271,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 127 | 
            +
            add_period(2034,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19712271,8),0,Date::ITALY),DateTime.new0(Rational.new!(14785631,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 128 | 
            +
            add_period(2034,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14785631,6),0,Date::ITALY),DateTime.new0(Rational.new!(19715183,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 129 | 
            +
            add_period(2035,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19715183,8),0,Date::ITALY),DateTime.new0(Rational.new!(14787815,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 130 | 
            +
            add_period(2035,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14787815,6),0,Date::ITALY),DateTime.new0(Rational.new!(19718095,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 131 | 
            +
            add_period(2036,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19718095,8),0,Date::ITALY),DateTime.new0(Rational.new!(14789999,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 132 | 
            +
            add_period(2036,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14789999,6),0,Date::ITALY),DateTime.new0(Rational.new!(19721007,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 133 | 
            +
            add_period(2037,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19721007,8),0,Date::ITALY),DateTime.new0(Rational.new!(14792183,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 134 | 
            +
            add_period(2037,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14792183,6),0,Date::ITALY),DateTime.new0(Rational.new!(19723975,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 135 | 
            +
            add_period(2038,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19723975,8),0,Date::ITALY),DateTime.new0(Rational.new!(14794409,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 136 | 
            +
            add_period(2038,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14794409,6),0,Date::ITALY),DateTime.new0(Rational.new!(19726887,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 137 | 
            +
            add_period(2039,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19726887,8),0,Date::ITALY),DateTime.new0(Rational.new!(14796593,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 138 | 
            +
            add_period(2039,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14796593,6),0,Date::ITALY),DateTime.new0(Rational.new!(19729799,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 139 | 
            +
            add_period(2040,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19729799,8),0,Date::ITALY),DateTime.new0(Rational.new!(14798777,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 140 | 
            +
            add_period(2040,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14798777,6),0,Date::ITALY),DateTime.new0(Rational.new!(19732711,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 141 | 
            +
            add_period(2041,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19732711,8),0,Date::ITALY),DateTime.new0(Rational.new!(14800961,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 142 | 
            +
            add_period(2041,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14800961,6),0,Date::ITALY),DateTime.new0(Rational.new!(19735623,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 143 | 
            +
            add_period(2042,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19735623,8),0,Date::ITALY),DateTime.new0(Rational.new!(14803145,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 144 | 
            +
            add_period(2042,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14803145,6),0,Date::ITALY),DateTime.new0(Rational.new!(19738535,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 145 | 
            +
            add_period(2043,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19738535,8),0,Date::ITALY),DateTime.new0(Rational.new!(14805329,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 146 | 
            +
            add_period(2043,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14805329,6),0,Date::ITALY),DateTime.new0(Rational.new!(19741503,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 147 | 
            +
            add_period(2044,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19741503,8),0,Date::ITALY),DateTime.new0(Rational.new!(14807555,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 148 | 
            +
            add_period(2044,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14807555,6),0,Date::ITALY),DateTime.new0(Rational.new!(19744415,8),0,Date::ITALY),-25200,0,:'MST')}
         | 
| 149 | 
            +
            add_period(2045,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(19744415,8),0,Date::ITALY),DateTime.new0(Rational.new!(14809739,6),0,Date::ITALY),-25200,3600,:'MDT')}
         | 
| 150 | 
            +
            add_period(2045,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(14809739,6),0,Date::ITALY),nil,-25200,0,:'MST')}
         | 
| 151 151 | 
             
            end
         | 
| 152 152 | 
             
            end
         | 
| 153 153 | 
             
            end
         | 
| @@ -86,85 +86,85 @@ add_period(2004,10) {TimezonePeriod.new(DateTime.new0(Rational.new!(58879433,24) | |
| 86 86 | 
             
            add_period(2005,4) {TimezonePeriod.new(DateTime.new0(Rational.new!(9813855,4),0,Date::ITALY),DateTime.new0(Rational.new!(58888169,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 87 87 | 
             
            add_period(2005,10) {TimezonePeriod.new(DateTime.new0(Rational.new!(58888169,24),0,Date::ITALY),DateTime.new0(Rational.new!(9815311,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 88 88 | 
             
            add_period(2006,4) {TimezonePeriod.new(DateTime.new0(Rational.new!(9815311,4),0,Date::ITALY),DateTime.new0(Rational.new!(58896905,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 89 | 
            -
            add_period(2006,10) {TimezonePeriod.new(DateTime.new0(Rational.new!(58896905,24),0,Date::ITALY),DateTime.new0(Rational.new!( | 
| 90 | 
            -
            add_period(2007, | 
| 91 | 
            -
            add_period(2007, | 
| 92 | 
            -
            add_period(2008, | 
| 93 | 
            -
            add_period(2008, | 
| 94 | 
            -
            add_period(2009, | 
| 95 | 
            -
            add_period(2009, | 
| 96 | 
            -
            add_period(2010, | 
| 97 | 
            -
            add_period(2010, | 
| 98 | 
            -
            add_period(2011, | 
| 99 | 
            -
            add_period(2011, | 
| 100 | 
            -
            add_period(2012, | 
| 101 | 
            -
            add_period(2012, | 
| 102 | 
            -
            add_period(2013, | 
| 103 | 
            -
            add_period(2013, | 
| 104 | 
            -
            add_period(2014, | 
| 105 | 
            -
            add_period(2014, | 
| 106 | 
            -
            add_period(2015, | 
| 107 | 
            -
            add_period(2015, | 
| 108 | 
            -
            add_period(2016, | 
| 109 | 
            -
            add_period(2016, | 
| 110 | 
            -
            add_period(2017, | 
| 111 | 
            -
            add_period(2017, | 
| 112 | 
            -
            add_period(2018, | 
| 113 | 
            -
            add_period(2018, | 
| 114 | 
            -
            add_period(2019, | 
| 115 | 
            -
            add_period(2019, | 
| 116 | 
            -
            add_period(2020, | 
| 117 | 
            -
            add_period(2020, | 
| 118 | 
            -
            add_period(2021, | 
| 119 | 
            -
            add_period(2021, | 
| 120 | 
            -
            add_period(2022, | 
| 121 | 
            -
            add_period(2022, | 
| 122 | 
            -
            add_period(2023, | 
| 123 | 
            -
            add_period(2023, | 
| 124 | 
            -
            add_period(2024, | 
| 125 | 
            -
            add_period(2024, | 
| 126 | 
            -
            add_period(2025, | 
| 127 | 
            -
            add_period(2025, | 
| 128 | 
            -
            add_period(2026, | 
| 129 | 
            -
            add_period(2026, | 
| 130 | 
            -
            add_period(2027, | 
| 131 | 
            -
            add_period(2027, | 
| 132 | 
            -
            add_period(2028, | 
| 133 | 
            -
            add_period(2028, | 
| 134 | 
            -
            add_period(2029, | 
| 135 | 
            -
            add_period(2029, | 
| 136 | 
            -
            add_period(2030, | 
| 137 | 
            -
            add_period(2030, | 
| 138 | 
            -
            add_period(2031, | 
| 139 | 
            -
            add_period(2031, | 
| 140 | 
            -
            add_period(2032, | 
| 141 | 
            -
            add_period(2032, | 
| 142 | 
            -
            add_period(2033, | 
| 143 | 
            -
            add_period(2033, | 
| 144 | 
            -
            add_period(2034, | 
| 145 | 
            -
            add_period(2034, | 
| 146 | 
            -
            add_period(2035, | 
| 147 | 
            -
            add_period(2035, | 
| 148 | 
            -
            add_period(2036, | 
| 149 | 
            -
            add_period(2036, | 
| 150 | 
            -
            add_period(2037, | 
| 151 | 
            -
            add_period(2037, | 
| 152 | 
            -
            add_period(2038, | 
| 153 | 
            -
            add_period(2038, | 
| 154 | 
            -
            add_period(2039, | 
| 155 | 
            -
            add_period(2039, | 
| 156 | 
            -
            add_period(2040, | 
| 157 | 
            -
            add_period(2040, | 
| 158 | 
            -
            add_period(2041, | 
| 159 | 
            -
            add_period(2041, | 
| 160 | 
            -
            add_period(2042, | 
| 161 | 
            -
            add_period(2042, | 
| 162 | 
            -
            add_period(2043, | 
| 163 | 
            -
            add_period(2043, | 
| 164 | 
            -
            add_period(2044, | 
| 165 | 
            -
            add_period(2044, | 
| 166 | 
            -
            add_period(2045, | 
| 167 | 
            -
            add_period(2045, | 
| 89 | 
            +
            add_period(2006,10) {TimezonePeriod.new(DateTime.new0(Rational.new!(58896905,24),0,Date::ITALY),DateTime.new0(Rational.new!(9816683,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 90 | 
            +
            add_period(2007,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9816683,4),0,Date::ITALY),DateTime.new0(Rational.new!(58905809,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 91 | 
            +
            add_period(2007,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(58905809,24),0,Date::ITALY),DateTime.new0(Rational.new!(9818139,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 92 | 
            +
            add_period(2008,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9818139,4),0,Date::ITALY),DateTime.new0(Rational.new!(58914545,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 93 | 
            +
            add_period(2008,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(58914545,24),0,Date::ITALY),DateTime.new0(Rational.new!(9819595,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 94 | 
            +
            add_period(2009,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9819595,4),0,Date::ITALY),DateTime.new0(Rational.new!(58923281,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 95 | 
            +
            add_period(2009,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(58923281,24),0,Date::ITALY),DateTime.new0(Rational.new!(9821079,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 96 | 
            +
            add_period(2010,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9821079,4),0,Date::ITALY),DateTime.new0(Rational.new!(58932185,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 97 | 
            +
            add_period(2010,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(58932185,24),0,Date::ITALY),DateTime.new0(Rational.new!(9822535,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 98 | 
            +
            add_period(2011,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9822535,4),0,Date::ITALY),DateTime.new0(Rational.new!(58940921,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 99 | 
            +
            add_period(2011,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(58940921,24),0,Date::ITALY),DateTime.new0(Rational.new!(9823991,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 100 | 
            +
            add_period(2012,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9823991,4),0,Date::ITALY),DateTime.new0(Rational.new!(58949657,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 101 | 
            +
            add_period(2012,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(58949657,24),0,Date::ITALY),DateTime.new0(Rational.new!(9825447,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 102 | 
            +
            add_period(2013,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9825447,4),0,Date::ITALY),DateTime.new0(Rational.new!(58958393,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 103 | 
            +
            add_period(2013,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(58958393,24),0,Date::ITALY),DateTime.new0(Rational.new!(9826903,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 104 | 
            +
            add_period(2014,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9826903,4),0,Date::ITALY),DateTime.new0(Rational.new!(58967129,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 105 | 
            +
            add_period(2014,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(58967129,24),0,Date::ITALY),DateTime.new0(Rational.new!(9828359,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 106 | 
            +
            add_period(2015,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9828359,4),0,Date::ITALY),DateTime.new0(Rational.new!(58975865,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 107 | 
            +
            add_period(2015,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(58975865,24),0,Date::ITALY),DateTime.new0(Rational.new!(9829843,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 108 | 
            +
            add_period(2016,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9829843,4),0,Date::ITALY),DateTime.new0(Rational.new!(58984769,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 109 | 
            +
            add_period(2016,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(58984769,24),0,Date::ITALY),DateTime.new0(Rational.new!(9831299,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 110 | 
            +
            add_period(2017,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9831299,4),0,Date::ITALY),DateTime.new0(Rational.new!(58993505,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 111 | 
            +
            add_period(2017,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(58993505,24),0,Date::ITALY),DateTime.new0(Rational.new!(9832755,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 112 | 
            +
            add_period(2018,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9832755,4),0,Date::ITALY),DateTime.new0(Rational.new!(59002241,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 113 | 
            +
            add_period(2018,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59002241,24),0,Date::ITALY),DateTime.new0(Rational.new!(9834211,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 114 | 
            +
            add_period(2019,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9834211,4),0,Date::ITALY),DateTime.new0(Rational.new!(59010977,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 115 | 
            +
            add_period(2019,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59010977,24),0,Date::ITALY),DateTime.new0(Rational.new!(9835667,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 116 | 
            +
            add_period(2020,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9835667,4),0,Date::ITALY),DateTime.new0(Rational.new!(59019713,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 117 | 
            +
            add_period(2020,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59019713,24),0,Date::ITALY),DateTime.new0(Rational.new!(9837151,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 118 | 
            +
            add_period(2021,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9837151,4),0,Date::ITALY),DateTime.new0(Rational.new!(59028617,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 119 | 
            +
            add_period(2021,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59028617,24),0,Date::ITALY),DateTime.new0(Rational.new!(9838607,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 120 | 
            +
            add_period(2022,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9838607,4),0,Date::ITALY),DateTime.new0(Rational.new!(59037353,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 121 | 
            +
            add_period(2022,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59037353,24),0,Date::ITALY),DateTime.new0(Rational.new!(9840063,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 122 | 
            +
            add_period(2023,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9840063,4),0,Date::ITALY),DateTime.new0(Rational.new!(59046089,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 123 | 
            +
            add_period(2023,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59046089,24),0,Date::ITALY),DateTime.new0(Rational.new!(9841519,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 124 | 
            +
            add_period(2024,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9841519,4),0,Date::ITALY),DateTime.new0(Rational.new!(59054825,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 125 | 
            +
            add_period(2024,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59054825,24),0,Date::ITALY),DateTime.new0(Rational.new!(9842975,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 126 | 
            +
            add_period(2025,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9842975,4),0,Date::ITALY),DateTime.new0(Rational.new!(59063561,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 127 | 
            +
            add_period(2025,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59063561,24),0,Date::ITALY),DateTime.new0(Rational.new!(9844431,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 128 | 
            +
            add_period(2026,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9844431,4),0,Date::ITALY),DateTime.new0(Rational.new!(59072297,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 129 | 
            +
            add_period(2026,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59072297,24),0,Date::ITALY),DateTime.new0(Rational.new!(9845915,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 130 | 
            +
            add_period(2027,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9845915,4),0,Date::ITALY),DateTime.new0(Rational.new!(59081201,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 131 | 
            +
            add_period(2027,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59081201,24),0,Date::ITALY),DateTime.new0(Rational.new!(9847371,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 132 | 
            +
            add_period(2028,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9847371,4),0,Date::ITALY),DateTime.new0(Rational.new!(59089937,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 133 | 
            +
            add_period(2028,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59089937,24),0,Date::ITALY),DateTime.new0(Rational.new!(9848827,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 134 | 
            +
            add_period(2029,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9848827,4),0,Date::ITALY),DateTime.new0(Rational.new!(59098673,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 135 | 
            +
            add_period(2029,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59098673,24),0,Date::ITALY),DateTime.new0(Rational.new!(9850283,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 136 | 
            +
            add_period(2030,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9850283,4),0,Date::ITALY),DateTime.new0(Rational.new!(59107409,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 137 | 
            +
            add_period(2030,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59107409,24),0,Date::ITALY),DateTime.new0(Rational.new!(9851739,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 138 | 
            +
            add_period(2031,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9851739,4),0,Date::ITALY),DateTime.new0(Rational.new!(59116145,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 139 | 
            +
            add_period(2031,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59116145,24),0,Date::ITALY),DateTime.new0(Rational.new!(9853223,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 140 | 
            +
            add_period(2032,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9853223,4),0,Date::ITALY),DateTime.new0(Rational.new!(59125049,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 141 | 
            +
            add_period(2032,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59125049,24),0,Date::ITALY),DateTime.new0(Rational.new!(9854679,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 142 | 
            +
            add_period(2033,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9854679,4),0,Date::ITALY),DateTime.new0(Rational.new!(59133785,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 143 | 
            +
            add_period(2033,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59133785,24),0,Date::ITALY),DateTime.new0(Rational.new!(9856135,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 144 | 
            +
            add_period(2034,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9856135,4),0,Date::ITALY),DateTime.new0(Rational.new!(59142521,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 145 | 
            +
            add_period(2034,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59142521,24),0,Date::ITALY),DateTime.new0(Rational.new!(9857591,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 146 | 
            +
            add_period(2035,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9857591,4),0,Date::ITALY),DateTime.new0(Rational.new!(59151257,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 147 | 
            +
            add_period(2035,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59151257,24),0,Date::ITALY),DateTime.new0(Rational.new!(9859047,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 148 | 
            +
            add_period(2036,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9859047,4),0,Date::ITALY),DateTime.new0(Rational.new!(59159993,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 149 | 
            +
            add_period(2036,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59159993,24),0,Date::ITALY),DateTime.new0(Rational.new!(9860503,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 150 | 
            +
            add_period(2037,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9860503,4),0,Date::ITALY),DateTime.new0(Rational.new!(59168729,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 151 | 
            +
            add_period(2037,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59168729,24),0,Date::ITALY),DateTime.new0(Rational.new!(9861987,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 152 | 
            +
            add_period(2038,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9861987,4),0,Date::ITALY),DateTime.new0(Rational.new!(59177633,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 153 | 
            +
            add_period(2038,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59177633,24),0,Date::ITALY),DateTime.new0(Rational.new!(9863443,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 154 | 
            +
            add_period(2039,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9863443,4),0,Date::ITALY),DateTime.new0(Rational.new!(59186369,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 155 | 
            +
            add_period(2039,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59186369,24),0,Date::ITALY),DateTime.new0(Rational.new!(9864899,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 156 | 
            +
            add_period(2040,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9864899,4),0,Date::ITALY),DateTime.new0(Rational.new!(59195105,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 157 | 
            +
            add_period(2040,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59195105,24),0,Date::ITALY),DateTime.new0(Rational.new!(9866355,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 158 | 
            +
            add_period(2041,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9866355,4),0,Date::ITALY),DateTime.new0(Rational.new!(59203841,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 159 | 
            +
            add_period(2041,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59203841,24),0,Date::ITALY),DateTime.new0(Rational.new!(9867811,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 160 | 
            +
            add_period(2042,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9867811,4),0,Date::ITALY),DateTime.new0(Rational.new!(59212577,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 161 | 
            +
            add_period(2042,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59212577,24),0,Date::ITALY),DateTime.new0(Rational.new!(9869267,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 162 | 
            +
            add_period(2043,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9869267,4),0,Date::ITALY),DateTime.new0(Rational.new!(59221313,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 163 | 
            +
            add_period(2043,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59221313,24),0,Date::ITALY),DateTime.new0(Rational.new!(9870751,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 164 | 
            +
            add_period(2044,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9870751,4),0,Date::ITALY),DateTime.new0(Rational.new!(59230217,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 165 | 
            +
            add_period(2044,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59230217,24),0,Date::ITALY),DateTime.new0(Rational.new!(9872207,4),0,Date::ITALY),-14400,0,:'AST')}
         | 
| 166 | 
            +
            add_period(2045,3) {TimezonePeriod.new(DateTime.new0(Rational.new!(9872207,4),0,Date::ITALY),DateTime.new0(Rational.new!(59238953,24),0,Date::ITALY),-14400,3600,:'ADT')}
         | 
| 167 | 
            +
            add_period(2045,11) {TimezonePeriod.new(DateTime.new0(Rational.new!(59238953,24),0,Date::ITALY),nil,-14400,0,:'AST')}
         | 
| 168 168 | 
             
            end
         | 
| 169 169 | 
             
            end
         | 
| 170 170 | 
             
            end
         |