tzinfo 0.3.37 → 0.3.38

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of tzinfo might be problematic. Click here for more details.

Files changed (64) hide show
  1. data/.yardopts +8 -0
  2. data/CHANGES +6 -0
  3. data/README +13 -16
  4. data/Rakefile +126 -54
  5. data/lib/tzinfo/country.rb +5 -1
  6. data/lib/tzinfo/country_index_definition.rb +6 -1
  7. data/lib/tzinfo/country_info.rb +3 -1
  8. data/lib/tzinfo/country_timezone.rb +1 -1
  9. data/lib/tzinfo/data_timezone.rb +3 -1
  10. data/lib/tzinfo/data_timezone_info.rb +3 -1
  11. data/lib/tzinfo/definitions/Africa/Casablanca.rb +55 -74
  12. data/lib/tzinfo/definitions/Africa/Juba.rb +1 -41
  13. data/lib/tzinfo/definitions/America/Anguilla.rb +1 -6
  14. data/lib/tzinfo/definitions/America/Araguaina.rb +0 -74
  15. data/lib/tzinfo/definitions/America/Argentina/San_Luis.rb +1 -1
  16. data/lib/tzinfo/definitions/America/Aruba.rb +1 -8
  17. data/lib/tzinfo/definitions/America/Asuncion.rb +37 -37
  18. data/lib/tzinfo/definitions/America/Cayman.rb +2 -2
  19. data/lib/tzinfo/definitions/America/Dominica.rb +1 -6
  20. data/lib/tzinfo/definitions/America/Grand_Turk.rb +2 -2
  21. data/lib/tzinfo/definitions/America/Grenada.rb +1 -6
  22. data/lib/tzinfo/definitions/America/Guadeloupe.rb +1 -6
  23. data/lib/tzinfo/definitions/America/Jamaica.rb +4 -4
  24. data/lib/tzinfo/definitions/America/Marigot.rb +1 -1
  25. data/lib/tzinfo/definitions/America/Montserrat.rb +1 -6
  26. data/lib/tzinfo/definitions/America/St_Barthelemy.rb +1 -1
  27. data/lib/tzinfo/definitions/America/St_Kitts.rb +1 -6
  28. data/lib/tzinfo/definitions/America/St_Lucia.rb +1 -8
  29. data/lib/tzinfo/definitions/America/St_Thomas.rb +1 -6
  30. data/lib/tzinfo/definitions/America/St_Vincent.rb +1 -8
  31. data/lib/tzinfo/definitions/America/Tortola.rb +1 -6
  32. data/lib/tzinfo/definitions/America/Virgin.rb +1 -1
  33. data/lib/tzinfo/definitions/Antarctica/Macquarie.rb +3 -7
  34. data/lib/tzinfo/definitions/Antarctica/McMurdo.rb +1 -159
  35. data/lib/tzinfo/definitions/Antarctica/South_Pole.rb +1 -1
  36. data/lib/tzinfo/definitions/Asia/Amman.rb +2 -75
  37. data/lib/tzinfo/definitions/Asia/Dili.rb +1 -1
  38. data/lib/tzinfo/definitions/Asia/Gaza.rb +79 -3
  39. data/lib/tzinfo/definitions/Asia/Hebron.rb +81 -5
  40. data/lib/tzinfo/definitions/Asia/Jakarta.rb +4 -4
  41. data/lib/tzinfo/definitions/Asia/Jayapura.rb +1 -1
  42. data/lib/tzinfo/definitions/Asia/Jerusalem.rb +40 -40
  43. data/lib/tzinfo/definitions/Asia/Makassar.rb +1 -1
  44. data/lib/tzinfo/definitions/Asia/Pontianak.rb +4 -4
  45. data/lib/tzinfo/definitions/Europe/Vaduz.rb +1 -147
  46. data/lib/tzinfo/definitions/Europe/Zurich.rb +3 -3
  47. data/lib/tzinfo/definitions/Pacific/Fiji.rb +17 -17
  48. data/lib/tzinfo/definitions/Pacific/Johnston.rb +1 -4
  49. data/lib/tzinfo/indexes/countries.rb +8 -11
  50. data/lib/tzinfo/indexes/timezones.rb +15 -15
  51. data/lib/tzinfo/info_timezone.rb +3 -1
  52. data/lib/tzinfo/linked_timezone.rb +4 -1
  53. data/lib/tzinfo/linked_timezone_info.rb +3 -1
  54. data/lib/tzinfo/offset_rationals.rb +4 -2
  55. data/lib/tzinfo/ruby_core_support.rb +4 -2
  56. data/lib/tzinfo/time_or_datetime.rb +3 -1
  57. data/lib/tzinfo/timezone.rb +7 -1
  58. data/lib/tzinfo/timezone_definition.rb +5 -1
  59. data/lib/tzinfo/timezone_index_definition.rb +6 -1
  60. data/lib/tzinfo/timezone_info.rb +3 -1
  61. data/lib/tzinfo/timezone_offset_info.rb +3 -1
  62. data/lib/tzinfo/timezone_transition_info.rb +3 -1
  63. data/lib/tzinfo/tzdataparser.rb +48 -13
  64. metadata +6 -5
@@ -0,0 +1,8 @@
1
+ --no-private
2
+ --exclude ^lib/tzinfo/definitions/
3
+ --exclude ^lib/tzinfo/indexes/
4
+ lib/**/*.rb
5
+ -
6
+ CHANGES
7
+ LICENSE
8
+ README
data/CHANGES CHANGED
@@ -1,3 +1,9 @@
1
+ == Version 0.3.38 (tzdata v2013g) - 8-Oct-2013
2
+
3
+ * Updated to tzdata version 2013g
4
+ (http://mm.icann.org/pipermail/tz-announce/2013-October/000015.html).
5
+
6
+
1
7
  == Version 0.3.37 (tzdata v2013b) - 11-Mar-2013
2
8
 
3
9
  * Updated to tzdata version 2013b
data/README CHANGED
@@ -1,12 +1,12 @@
1
1
  = TZInfo -- Daylight-savings aware timezone support for Ruby
2
2
 
3
- TZInfo[http://tzinfo.rubyforge.org] uses the tz database
4
- (http://www.twinsun.com/tz/tz-link.htm) to provide
3
+ TZInfo[http://tzinfo.github.io] uses the IANA Time Zone Database
4
+ (http://www.iana.org/time-zones) to provide
5
5
  daylight-savings aware transformations between times in different timezones.
6
6
  This is the same database as used for zoneinfo on Unix machines.
7
7
 
8
- The tz database has been imported (using TZDataParser) and turned into a set of
9
- Ruby modules (which are packaged with this release).
8
+ The Time Zone database has been imported (using TZDataParser) and turned into a
9
+ set of Ruby modules (which are packaged with this release).
10
10
 
11
11
 
12
12
  == Example usage
@@ -66,15 +66,9 @@ The above covers the most common uses of Timezone and Country. For more detail,
66
66
  see the API documentation for the individual classes.
67
67
 
68
68
 
69
- == Download
69
+ == Documentation
70
70
 
71
- The latest version of TZInfo can be found at
72
-
73
- * http://rubyforge.org/frs/?group_id=894
74
-
75
- API documentation can be found at
76
-
77
- * http://tzinfo.rubyforge.org/doc/
71
+ API documentation for TZInfo is available on RubyDoc.info[http://rubydoc.info/gems/tzinfo/frames].
78
72
 
79
73
 
80
74
  == Installation
@@ -93,9 +87,12 @@ or to automatically download and install:
93
87
  TZInfo is released under the MIT[http://opensource.org/licenses/mit-license.html] license.
94
88
 
95
89
 
96
- == Support
90
+ == Source Code
91
+
92
+ Source code for TZInfo is available on GitHub[https://github.com/tzinfo/tzinfo].
93
+
97
94
 
98
- Please post to the TZInfo Users mailing list (http://rubyforge.org/mailman/listinfo/tzinfo-users)
99
- if you require assistance or have any suggestions.
95
+ == Issue Tracker
100
96
 
101
- Alternatively, you can contact the author Philip Ross directly at phil.ross@gmail.com.
97
+ Please post any bugs, issues, feature requests or questions to the
98
+ {GitHub issue tracker}[https://github.com/tzinfo/tzinfo/issues].
data/Rakefile CHANGED
@@ -40,12 +40,13 @@ def sh(*cmd, &block)
40
40
  end
41
41
 
42
42
 
43
- PKG_VERSION = "0.3.37"
43
+ PKG_VERSION = "0.3.38"
44
44
  PKG_FILES = FileList[
45
45
  'CHANGES',
46
46
  'LICENSE',
47
47
  'Rakefile',
48
48
  'README',
49
+ '.yardopts',
49
50
  'lib',
50
51
  'lib/**/*'
51
52
  ].delete_if {|f| f.include?('.svn')}
@@ -61,7 +62,7 @@ SPEC = Gem::Specification.new do |s|
61
62
  s.version = PKG_VERSION
62
63
  s.author = "Philip Ross"
63
64
  s.email = "phil.ross@gmail.com"
64
- s.homepage = "http://tzinfo.rubyforge.org/"
65
+ s.homepage = "http://tzinfo.github.io"
65
66
  s.platform = Gem::Platform::RUBY
66
67
  s.summary = "Daylight-savings aware timezone library"
67
68
  s.description = "TZInfo is a Ruby library that uses the standard tz (Olson) database to provide daylight savings aware transformations between times in different time zones."
@@ -148,81 +149,152 @@ task :build_tz_modules do
148
149
  p = TZInfo::TZDataParser.new('../data', BUILD_TZ_CLASSES_DIR)
149
150
  p.execute
150
151
 
151
- ['indexes', 'definitions'].each {|dir|
152
- sync_svn("#{BUILD_TZ_CLASSES_DIR}/#{dir}", "lib/tzinfo/#{dir}")
153
- }
152
+ scm = Scm.create(File.join(File.dirname(__FILE__), '..'))
153
+
154
+ ['indexes', 'definitions'].each do |dir|
155
+ scm.sync("#{BUILD_TZ_CLASSES_DIR}/#{dir}", "lib/tzinfo/#{dir}")
156
+ end
154
157
  ensure
155
158
  FileUtils.rm_rf(BUILD_TZ_CLASSES_DIR)
156
159
  end
157
160
  end
158
161
 
159
- def sync_svn(source_dir, target_dir)
160
- puts "SVN Sync from #{source_dir} to #{target_dir}"
162
+ class Scm
163
+ def self.create(dir)
164
+ if File.directory?(File.join(dir, '.git'))
165
+ GitScm.new(dir)
166
+ elsif File.directory?(File.join(dir, '.svn'))
167
+ SvnScm.new(dir)
168
+ else
169
+ NullScm.new(dir)
170
+ end
171
+ end
161
172
 
162
- # Assumes a directory will never turn into a file and vice-versa
163
- # (files will all end in .rb, directories won't).
164
- # SVN wouldn't allow the change in a single commit anyway.
173
+ def initialize(dir)
174
+ end
175
+
176
+ def sync(source_dir, target_dir)
177
+ puts "Sync from #{source_dir} to #{target_dir}#{command ? " using #{command}" : ''}"
178
+ sync_dirs(source_dir, target_dir)
179
+ end
180
+
181
+ protected
182
+
183
+ def exec_scm(params)
184
+ puts "#{command} #{params}"
185
+ `#{command} #{params}`
186
+ raise "#{command} exited with status #$?" if $? != 0
187
+ end
165
188
 
166
- source_entries, target_entries = [source_dir, target_dir].collect {|dir|
167
- Dir.entries(dir).delete_if {|entry| entry =~ /^\.(\.?|svn)$/}.sort
168
- }
189
+ private
169
190
 
170
- until source_entries.empty? || target_entries.empty?
171
- if source_entries.last == target_entries.last
172
- source_file = "#{source_dir}/#{source_entries.last}"
173
- target_file = "#{target_dir}/#{target_entries.last}"
191
+ def sync_dirs(source_dir, target_dir)
192
+ # Assumes a directory will never turn into a file and vice-versa
193
+ # (files will all end in .rb, directories won't).
194
+
195
+ source_entries, target_entries = [source_dir, target_dir].collect do |dir|
196
+ Dir.entries(dir).delete_if {|entry| entry =~ /\A\./}.sort
197
+ end
198
+
199
+ until source_entries.empty? || target_entries.empty?
200
+ last_source = source_entries.last
201
+ last_target = target_entries.last
202
+
203
+ if last_source == last_target
204
+ source_file = File.join(source_dir, last_source)
205
+ target_file = File.join(target_dir, last_target)
206
+
207
+ if File.directory?(source_file)
208
+ sync_dirs(source_file, target_file)
209
+ else
210
+ FileUtils.cp(source_file, target_file)
211
+ end
212
+
213
+ source_entries.pop
214
+ target_entries.pop
215
+ elsif source_entries.last < target_entries.last
216
+ sync_only_in_target(target_dir, target_entries)
217
+ else
218
+ sync_only_in_source(source_dir, target_dir, source_entries)
219
+ end
220
+ end
174
221
 
175
- if File.directory?(source_file)
176
- sync_svn(source_file, target_file)
177
- else
178
- FileUtils.cp(source_file, target_file)
179
- end
222
+ until target_entries.empty?
223
+ sync_only_in_target(target_dir, target_entries)
224
+ end
180
225
 
181
- source_entries.pop
182
- target_entries.pop
183
- elsif source_entries.last < target_entries.last
184
- sync_svn_only_in_target(target_dir, target_entries)
185
- else
186
- sync_svn_only_in_source(source_dir, target_dir, source_entries)
187
- end
226
+ until source_entries.empty?
227
+ sync_only_in_source(source_dir, target_dir, source_entries)
228
+ end
229
+ end
230
+
231
+ def sync_only_in_target(target_dir, target_entries)
232
+ target_file = File.join(target_dir, target_entries.last)
233
+ delete(target_file)
234
+ target_entries.pop
235
+ end
236
+
237
+ def sync_only_in_source(source_dir, target_dir, source_entries)
238
+ source_file = File.join(source_dir, source_entries.last)
239
+ target_file = File.join(target_dir, source_entries.last)
240
+
241
+ if File.directory?(source_file)
242
+ Dir.mkdir(target_file)
243
+ add(target_file)
244
+ sync_dirs(source_file, target_file)
245
+ else
246
+ FileUtils.cp(source_file, target_file)
247
+ add(target_file)
248
+ end
249
+
250
+ source_entries.pop
251
+ end
252
+ end
253
+
254
+ class NullScm < Scm
255
+ def command
256
+ nil
188
257
  end
189
258
 
190
- until target_entries.empty?
191
- sync_svn_only_in_target(target_dir, target_entries)
259
+ def add(file)
192
260
  end
193
261
 
194
- until source_entries.empty?
195
- sync_svn_only_in_source(source_dir, target_dir, source_entries)
262
+ def delete(file)
263
+ puts "rm -rf \"#{file}\""
264
+ FileUtils.rm_rf(file)
196
265
  end
197
266
  end
198
267
 
199
- def sync_svn_only_in_target(target_dir, target_entries)
200
- target_file = "#{target_dir}/#{target_entries.last}"
201
- exec_svn "delete \"#{target_file}\""
202
- target_entries.pop
268
+ class GitScm < Scm
269
+ def command
270
+ 'git'
271
+ end
272
+
273
+ def add(file)
274
+ unless File.directory?(file)
275
+ exec_scm "add \"#{file}\""
276
+ end
277
+ end
278
+
279
+ def delete(file)
280
+ exec_scm "rm -rf \"#{file}\""
281
+ end
203
282
  end
204
283
 
205
- def sync_svn_only_in_source(source_dir, target_dir, source_entries)
206
- source_file = "#{source_dir}/#{source_entries.last}"
207
- target_file = "#{target_dir}/#{source_entries.last}"
208
-
209
- if File.directory?(source_file)
210
- Dir.mkdir(target_file)
211
- exec_svn "add \"#{target_file}\""
212
- sync_svn(source_file, target_file)
213
- else
214
- FileUtils.cp(source_file, target_file)
215
- exec_svn "add \"#{target_file}\""
284
+ class SvnScm < Scm
285
+ def command
286
+ 'svn'
287
+ end
288
+
289
+ def add(file)
290
+ exec_scm "add \"#{file}\""
216
291
  end
217
292
 
218
- source_entries.pop
293
+ def delete(file)
294
+ exec_scm "delete --force \"#{file}\""
295
+ end
219
296
  end
220
297
 
221
- def exec_svn(params)
222
- puts "svn #{params}"
223
- `svn #{params}`
224
- raise "SVN exited with status #$?" if $? != 0
225
- end
226
298
 
227
299
  task :build_tz_module do
228
300
  require 'lib/tzinfo/tzdataparser'
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2005-2010 Philip Ross
2
+ # Copyright (c) 2005-2013 Philip Ross
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining a copy
5
5
  # of this software and associated documentation files (the "Software"), to deal
@@ -36,9 +36,13 @@ module TZInfo
36
36
  include Comparable
37
37
 
38
38
  # Defined countries.
39
+ #
40
+ # @!visibility private
39
41
  @@countries = {}
40
42
 
41
43
  # Whether the countries index has been loaded yet.
44
+ #
45
+ # @!visibility private
42
46
  @@index_loaded = false
43
47
 
44
48
  # Gets a Country by its ISO 3166 code. Raises an InvalidCountryCode
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2006-2010 Philip Ross
2
+ # Copyright (c) 2006-2013 Philip Ross
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining a copy
5
5
  # of this software and associated documentation files (the "Software"), to deal
@@ -23,6 +23,8 @@
23
23
  module TZInfo
24
24
  # The country index file includes CountryIndexDefinition which provides
25
25
  # a country method used to define each country in the index.
26
+ #
27
+ # @private
26
28
  module CountryIndexDefinition #:nodoc:
27
29
  def self.append_features(base)
28
30
  super
@@ -30,6 +32,9 @@ module TZInfo
30
32
  base.instance_eval { @countries = {} }
31
33
  end
32
34
 
35
+ # Class methods for inclusion.
36
+ #
37
+ # @private
33
38
  module ClassMethods #:nodoc:
34
39
  # Defines a country with an ISO 3166 country code, name and block. The
35
40
  # block will be evaluated to obtain all the timezones for the country.
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2006-2010 Philip Ross
2
+ # Copyright (c) 2006-2013 Philip Ross
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining a copy
5
5
  # of this software and associated documentation files (the "Software"), to deal
@@ -23,6 +23,8 @@
23
23
  module TZInfo
24
24
  # Class to store the data loaded from the country index. Instances of this
25
25
  # class are passed to the blocks in the index that define timezones.
26
+ #
27
+ # @private
26
28
  class CountryInfo #:nodoc:
27
29
  attr_reader :code
28
30
  attr_reader :name
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2006-2012 Philip Ross
2
+ # Copyright (c) 2006-2013 Philip Ross
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining a copy
5
5
  # of this software and associated documentation files (the "Software"), to deal
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2006-2010 Philip Ross
2
+ # Copyright (c) 2006-2013 Philip Ross
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining a copy
5
5
  # of this software and associated documentation files (the "Software"), to deal
@@ -23,6 +23,8 @@
23
23
  module TZInfo
24
24
 
25
25
  # A Timezone based on a DataTimezoneInfo.
26
+ #
27
+ # @private
26
28
  class DataTimezone < InfoTimezone #:nodoc:
27
29
 
28
30
  # Returns the TimezonePeriod for the given UTC time. utc can either be
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2006-2010 Philip Ross
2
+ # Copyright (c) 2006-2013 Philip Ross
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining a copy
5
5
  # of this software and associated documentation files (the "Software"), to deal
@@ -27,6 +27,8 @@ module TZInfo
27
27
  end
28
28
 
29
29
  # Represents a (non-linked) timezone defined in a data module.
30
+ #
31
+ # @private
30
32
  class DataTimezoneInfo < TimezoneInfo #:nodoc:
31
33
 
32
34
  # Constructs a new TimezoneInfo with its identifier.
@@ -42,95 +42,76 @@ module TZInfo
42
42
  tz.transition 2012, 8, :o2, 1345428000
43
43
  tz.transition 2012, 9, :o1, 1348970400
44
44
  tz.transition 2013, 4, :o2, 1367114400
45
- tz.transition 2013, 7, :o1, 1373335200
46
- tz.transition 2013, 8, :o2, 1375927200
47
- tz.transition 2013, 9, :o1, 1380420000
48
- tz.transition 2014, 4, :o2, 1398564000
45
+ tz.transition 2013, 7, :o1, 1373162400
46
+ tz.transition 2013, 8, :o2, 1376100000
47
+ tz.transition 2013, 10, :o1, 1382839200
48
+ tz.transition 2014, 3, :o2, 1396144800
49
49
  tz.transition 2014, 6, :o1, 1404007200
50
50
  tz.transition 2014, 7, :o2, 1406599200
51
- tz.transition 2014, 9, :o1, 1411869600
52
- tz.transition 2015, 4, :o2, 1430013600
51
+ tz.transition 2014, 10, :o1, 1414288800
52
+ tz.transition 2015, 3, :o2, 1427594400
53
53
  tz.transition 2015, 6, :o1, 1434592800
54
54
  tz.transition 2015, 7, :o2, 1437184800
55
- tz.transition 2015, 9, :o1, 1443319200
56
- tz.transition 2016, 4, :o2, 1461463200
55
+ tz.transition 2015, 10, :o1, 1445738400
56
+ tz.transition 2016, 3, :o2, 1459044000
57
57
  tz.transition 2016, 6, :o1, 1465264800
58
58
  tz.transition 2016, 7, :o2, 1467856800
59
- tz.transition 2016, 9, :o1, 1474768800
60
- tz.transition 2017, 4, :o2, 1493517600
59
+ tz.transition 2016, 10, :o1, 1477792800
60
+ tz.transition 2017, 3, :o2, 1490493600
61
61
  tz.transition 2017, 5, :o1, 1495850400
62
62
  tz.transition 2017, 6, :o2, 1498442400
63
- tz.transition 2017, 9, :o1, 1506218400
64
- tz.transition 2018, 4, :o2, 1524967200
63
+ tz.transition 2017, 10, :o1, 1509242400
64
+ tz.transition 2018, 3, :o2, 1521943200
65
65
  tz.transition 2018, 5, :o1, 1526436000
66
66
  tz.transition 2018, 6, :o2, 1529028000
67
- tz.transition 2018, 9, :o1, 1538272800
68
- tz.transition 2019, 4, :o2, 1556416800
67
+ tz.transition 2018, 10, :o1, 1540692000
68
+ tz.transition 2019, 3, :o2, 1553997600
69
69
  tz.transition 2019, 5, :o1, 1557108000
70
70
  tz.transition 2019, 6, :o2, 1559700000
71
- tz.transition 2019, 9, :o1, 1569722400
71
+ tz.transition 2019, 10, :o1, 1572141600
72
+ tz.transition 2020, 3, :o2, 1585447200
73
+ tz.transition 2020, 4, :o1, 1587693600
72
74
  tz.transition 2020, 5, :o2, 1590285600
73
- tz.transition 2020, 9, :o1, 1601172000
75
+ tz.transition 2020, 10, :o1, 1603591200
76
+ tz.transition 2021, 3, :o2, 1616896800
77
+ tz.transition 2021, 4, :o1, 1618279200
74
78
  tz.transition 2021, 5, :o2, 1620871200
75
- tz.transition 2021, 9, :o1, 1632621600
79
+ tz.transition 2021, 10, :o1, 1635645600
80
+ tz.transition 2022, 3, :o2, 1648346400
81
+ tz.transition 2022, 4, :o1, 1648951200
76
82
  tz.transition 2022, 5, :o2, 1651543200
77
- tz.transition 2022, 9, :o1, 1664071200
78
- tz.transition 2023, 4, :o2, 1682820000
79
- tz.transition 2023, 9, :o1, 1695520800
80
- tz.transition 2024, 4, :o2, 1714269600
81
- tz.transition 2024, 9, :o1, 1727575200
82
- tz.transition 2025, 4, :o2, 1745719200
83
- tz.transition 2025, 9, :o1, 1759024800
84
- tz.transition 2026, 4, :o2, 1777168800
85
- tz.transition 2026, 9, :o1, 1790474400
86
- tz.transition 2027, 4, :o2, 1808618400
87
- tz.transition 2027, 9, :o1, 1821924000
88
- tz.transition 2028, 4, :o2, 1840672800
89
- tz.transition 2028, 9, :o1, 1853373600
90
- tz.transition 2029, 4, :o2, 1872122400
91
- tz.transition 2029, 9, :o1, 1885428000
92
- tz.transition 2030, 4, :o2, 1903572000
93
- tz.transition 2030, 9, :o1, 1916877600
94
- tz.transition 2031, 4, :o2, 1935021600
95
- tz.transition 2031, 9, :o1, 1948327200
96
- tz.transition 2032, 4, :o2, 1966471200
97
- tz.transition 2032, 9, :o1, 1979776800
98
- tz.transition 2033, 4, :o2, 1997920800
99
- tz.transition 2033, 9, :o1, 2011226400
100
- tz.transition 2034, 4, :o2, 2029975200
101
- tz.transition 2034, 9, :o1, 2042676000
102
- tz.transition 2035, 4, :o2, 2061424800
103
- tz.transition 2035, 9, :o1, 2074730400
104
- tz.transition 2036, 4, :o2, 2092874400
105
- tz.transition 2036, 9, :o1, 2106180000
106
- tz.transition 2037, 4, :o2, 2124324000
107
- tz.transition 2037, 9, :o1, 2137629600
108
- tz.transition 2038, 4, :o2, 29586463, 12
109
- tz.transition 2038, 9, :o1, 29588311, 12
110
- tz.transition 2039, 4, :o2, 29590831, 12
111
- tz.transition 2039, 9, :o1, 29592679, 12
112
- tz.transition 2040, 4, :o2, 29595283, 12
113
- tz.transition 2040, 9, :o1, 29597131, 12
114
- tz.transition 2041, 4, :o2, 29599651, 12
115
- tz.transition 2041, 9, :o1, 29601499, 12
116
- tz.transition 2042, 4, :o2, 29604019, 12
117
- tz.transition 2042, 9, :o1, 29605867, 12
118
- tz.transition 2043, 4, :o2, 29608387, 12
119
- tz.transition 2043, 9, :o1, 29610235, 12
120
- tz.transition 2044, 4, :o2, 29612755, 12
121
- tz.transition 2044, 9, :o1, 29614603, 12
122
- tz.transition 2045, 4, :o2, 29617207, 12
123
- tz.transition 2045, 9, :o1, 29618971, 12
124
- tz.transition 2046, 4, :o2, 29621575, 12
125
- tz.transition 2046, 9, :o1, 29623423, 12
126
- tz.transition 2047, 4, :o2, 29625943, 12
127
- tz.transition 2047, 9, :o1, 29627791, 12
128
- tz.transition 2048, 4, :o2, 29630311, 12
129
- tz.transition 2048, 9, :o1, 29632159, 12
130
- tz.transition 2049, 4, :o2, 29634679, 12
131
- tz.transition 2049, 9, :o1, 29636527, 12
132
- tz.transition 2050, 4, :o2, 29639047, 12
133
- tz.transition 2050, 9, :o1, 29640895, 12
83
+ tz.transition 2022, 10, :o1, 1667095200
84
+ tz.transition 2023, 4, :o2, 1682128800
85
+ tz.transition 2023, 10, :o1, 1698544800
86
+ tz.transition 2024, 4, :o2, 1712714400
87
+ tz.transition 2024, 10, :o1, 1729994400
88
+ tz.transition 2025, 3, :o2, 1743386400
89
+ tz.transition 2025, 10, :o1, 1761444000
90
+ tz.transition 2026, 3, :o2, 1774749600
91
+ tz.transition 2026, 10, :o1, 1792893600
92
+ tz.transition 2027, 3, :o2, 1806199200
93
+ tz.transition 2027, 10, :o1, 1824948000
94
+ tz.transition 2028, 3, :o2, 1837648800
95
+ tz.transition 2028, 10, :o1, 1856397600
96
+ tz.transition 2029, 3, :o2, 1869098400
97
+ tz.transition 2029, 10, :o1, 1887847200
98
+ tz.transition 2030, 3, :o2, 1901152800
99
+ tz.transition 2030, 10, :o1, 1919296800
100
+ tz.transition 2031, 3, :o2, 1932602400
101
+ tz.transition 2031, 10, :o1, 1950746400
102
+ tz.transition 2032, 3, :o2, 1964052000
103
+ tz.transition 2032, 10, :o1, 1982800800
104
+ tz.transition 2033, 3, :o2, 1995501600
105
+ tz.transition 2033, 10, :o1, 2014250400
106
+ tz.transition 2034, 3, :o2, 2026951200
107
+ tz.transition 2034, 10, :o1, 2045700000
108
+ tz.transition 2035, 3, :o2, 2058400800
109
+ tz.transition 2035, 10, :o1, 2077149600
110
+ tz.transition 2036, 3, :o2, 2090455200
111
+ tz.transition 2036, 10, :o1, 2108167200
112
+ tz.transition 2037, 3, :o2, 2121904800
113
+ tz.transition 2037, 10, :o1, 2138839200
114
+ tz.transition 2038, 3, :o2, 29586127, 12
134
115
  end
135
116
  end
136
117
  end