timezone 1.3.3 → 1.3.29

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.
Files changed (276) hide show
  1. checksums.yaml +5 -5
  2. data/.codeclimate.yml +15 -0
  3. data/.github/workflows/ci.yml +40 -0
  4. data/.rubocop.yml +24 -5
  5. data/CHANGES.markdown +107 -0
  6. data/CONTRIBUTING.markdown +10 -6
  7. data/README.markdown +5 -7
  8. data/Rakefile +3 -1
  9. data/benchmark.rb +16 -29
  10. data/data/Africa/Accra +1 -47
  11. data/data/Africa/Addis_Ababa +5 -4
  12. data/data/Africa/Algiers +2 -2
  13. data/data/Africa/Asmara +5 -4
  14. data/data/Africa/Asmera +5 -4
  15. data/data/Africa/Bangui +4 -1
  16. data/data/Africa/Blantyre +1 -1
  17. data/data/Africa/Brazzaville +4 -1
  18. data/data/Africa/Bujumbura +1 -1
  19. data/data/Africa/Cairo +32 -0
  20. data/data/Africa/Casablanca +8 -6
  21. data/data/Africa/Dar_es_Salaam +5 -4
  22. data/data/Africa/Djibouti +5 -4
  23. data/data/Africa/Douala +4 -1
  24. data/data/Africa/El_Aaiun +8 -6
  25. data/data/Africa/Gaborone +1 -1
  26. data/data/Africa/Harare +1 -1
  27. data/data/Africa/Juba +2 -1
  28. data/data/Africa/Kampala +5 -4
  29. data/data/Africa/Kigali +1 -1
  30. data/data/Africa/Kinshasa +4 -1
  31. data/data/Africa/Lagos +4 -1
  32. data/data/Africa/Libreville +4 -1
  33. data/data/Africa/Luanda +4 -1
  34. data/data/Africa/Lubumbashi +1 -1
  35. data/data/Africa/Lusaka +1 -1
  36. data/data/Africa/Malabo +4 -1
  37. data/data/Africa/Maputo +1 -1
  38. data/data/Africa/Mogadishu +5 -4
  39. data/data/Africa/Nairobi +5 -4
  40. data/data/Africa/Niamey +4 -1
  41. data/data/Africa/Porto-Novo +4 -1
  42. data/data/America/Anguilla +4 -1
  43. data/data/America/Antigua +4 -1
  44. data/data/America/Aruba +4 -2
  45. data/data/America/Asuncion +2 -29
  46. data/data/America/Atikokan +2 -7
  47. data/data/America/Bahia_Banderas +5 -39
  48. data/data/America/Barbados +8 -3
  49. data/data/America/Belize +44 -1
  50. data/data/America/Blanc-Sablon +3 -5
  51. data/data/America/Bogota +1 -1
  52. data/data/America/Cambridge_Bay +17 -3
  53. data/data/America/Campo_Grande +1 -40
  54. data/data/America/Cancun +7 -6
  55. data/data/America/Chihuahua +5 -37
  56. data/data/America/Ciudad_Juarez +94 -0
  57. data/data/America/Coral_Harbour +2 -7
  58. data/data/America/Coyhaique +134 -0
  59. data/data/America/Creston +11 -3
  60. data/data/America/Cuiaba +1 -40
  61. data/data/America/Curacao +4 -2
  62. data/data/America/Dawson +2 -38
  63. data/data/America/Detroit +5 -1
  64. data/data/America/Dominica +4 -1
  65. data/data/America/Edmonton +1 -5
  66. data/data/America/Ensenada +13 -7
  67. data/data/America/Godthab +31 -32
  68. data/data/America/Grand_Turk +1 -2
  69. data/data/America/Grenada +4 -1
  70. data/data/America/Guadeloupe +4 -1
  71. data/data/America/Guyana +4 -3
  72. data/data/America/Hermosillo +5 -7
  73. data/data/America/Indiana/Tell_City +9 -12
  74. data/data/America/Inuvik +17 -4
  75. data/data/America/Iqaluit +17 -3
  76. data/data/America/Kentucky/Louisville +4 -4
  77. data/data/America/Kralendijk +4 -2
  78. data/data/America/Louisville +4 -4
  79. data/data/America/Lower_Princes +4 -2
  80. data/data/America/Marigot +4 -1
  81. data/data/America/Matamoros +1 -1
  82. data/data/America/Mazatlan +5 -39
  83. data/data/America/Merida +3 -35
  84. data/data/America/Metlakatla +2 -1
  85. data/data/America/Mexico_City +4 -36
  86. data/data/America/Miquelon +2 -2
  87. data/data/America/Monterrey +6 -33
  88. data/data/America/Montreal +2 -2
  89. data/data/America/Montserrat +4 -1
  90. data/data/America/Nassau +86 -2
  91. data/data/America/Nipigon +103 -5
  92. data/data/America/Nuuk +119 -0
  93. data/data/America/Ojinaga +38 -38
  94. data/data/America/Pangnirtung +51 -38
  95. data/data/America/Port_of_Spain +4 -1
  96. data/data/America/Punta_Arenas +8 -7
  97. data/data/America/Rainy_River +118 -67
  98. data/data/America/Rankin_Inlet +17 -3
  99. data/data/America/Resolute +17 -3
  100. data/data/America/Santa_Isabel +13 -7
  101. data/data/America/Santiago +11 -11
  102. data/data/America/Sao_Paulo +1 -40
  103. data/data/America/Scoresbysund +30 -30
  104. data/data/America/St_Barthelemy +4 -1
  105. data/data/America/St_Kitts +4 -1
  106. data/data/America/St_Lucia +4 -1
  107. data/data/America/St_Thomas +4 -1
  108. data/data/America/St_Vincent +4 -1
  109. data/data/America/Thunder_Bay +99 -5
  110. data/data/America/Tijuana +13 -7
  111. data/data/America/Toronto +2 -2
  112. data/data/America/Tortola +4 -1
  113. data/data/America/Vancouver +2 -2
  114. data/data/America/Virgin +4 -1
  115. data/data/America/Whitehorse +4 -40
  116. data/data/America/Yellowknife +33 -5
  117. data/data/Antarctica/Casey +10 -0
  118. data/data/Antarctica/DumontDUrville +2 -3
  119. data/data/Antarctica/Macquarie +58 -3
  120. data/data/Antarctica/Syowa +1 -1
  121. data/data/Antarctica/Vostok +4 -1
  122. data/data/Arctic/Longyearbyen +23 -21
  123. data/data/Asia/Almaty +2 -1
  124. data/data/Asia/Amman +3 -35
  125. data/data/Asia/Brunei +18 -2
  126. data/data/Asia/Choibalsan +46 -47
  127. data/data/Asia/Chongqing +3 -1
  128. data/data/Asia/Chungking +3 -1
  129. data/data/Asia/Damascus +1 -33
  130. data/data/Asia/Dili +2 -2
  131. data/data/Asia/Gaza +46 -40
  132. data/data/Asia/Harbin +3 -1
  133. data/data/Asia/Hebron +46 -40
  134. data/data/Asia/Ho_Chi_Minh +4 -4
  135. data/data/Asia/Hong_Kong +19 -19
  136. data/data/Asia/Istanbul +22 -36
  137. data/data/Asia/Jerusalem +37 -31
  138. data/data/Asia/Kuala_Lumpur +3 -3
  139. data/data/Asia/Manila +14 -10
  140. data/data/Asia/Qostanay +2 -1
  141. data/data/Asia/Saigon +4 -4
  142. data/data/Asia/Seoul +9 -1
  143. data/data/Asia/Shanghai +3 -1
  144. data/data/Asia/Singapore +1 -1
  145. data/data/Asia/Tehran +8 -39
  146. data/data/Asia/Tel_Aviv +37 -31
  147. data/data/Atlantic/Azores +23 -28
  148. data/data/Atlantic/Bermuda +29 -2
  149. data/data/Atlantic/Jan_Mayen +23 -21
  150. data/data/Atlantic/Madeira +21 -28
  151. data/data/Atlantic/Reykjavik +1 -68
  152. data/data/Australia/ACT +9 -9
  153. data/data/Australia/Adelaide +9 -9
  154. data/data/Australia/Brisbane +9 -9
  155. data/data/Australia/Broken_Hill +9 -9
  156. data/data/Australia/Canberra +9 -9
  157. data/data/Australia/Currie +22 -10
  158. data/data/Australia/Darwin +8 -8
  159. data/data/Australia/Eucla +7 -7
  160. data/data/Australia/Hobart +12 -8
  161. data/data/Australia/Lindeman +9 -9
  162. data/data/Australia/Melbourne +9 -9
  163. data/data/Australia/NSW +9 -9
  164. data/data/Australia/North +8 -8
  165. data/data/Australia/Perth +7 -7
  166. data/data/Australia/Queensland +9 -9
  167. data/data/Australia/South +9 -9
  168. data/data/Australia/Sydney +9 -9
  169. data/data/Australia/Tasmania +12 -8
  170. data/data/Australia/Victoria +9 -9
  171. data/data/Australia/West +7 -7
  172. data/data/Australia/Yancowinna +9 -9
  173. data/data/Brazil/East +1 -40
  174. data/data/CET +56 -7
  175. data/data/CST6CDT +90 -3
  176. data/data/Canada/Eastern +2 -2
  177. data/data/Canada/Mountain +1 -5
  178. data/data/Canada/Pacific +2 -2
  179. data/data/Canada/Yukon +4 -40
  180. data/data/Chile/Continental +11 -11
  181. data/data/Chile/EasterIsland +2 -2
  182. data/data/EET +24 -8
  183. data/data/EST +3 -1
  184. data/data/EST5EDT +90 -3
  185. data/data/Egypt +32 -0
  186. data/data/Eire +2 -2
  187. data/data/Etc/UCT +1 -1
  188. data/data/Europe/Amsterdam +60 -55
  189. data/data/Europe/Brussels +2 -2
  190. data/data/Europe/Budapest +24 -24
  191. data/data/Europe/Copenhagen +23 -14
  192. data/data/Europe/Dublin +2 -2
  193. data/data/Europe/Istanbul +22 -36
  194. data/data/Europe/Kaliningrad +6 -5
  195. data/data/Europe/Kiev +8 -8
  196. data/data/Europe/Kirov +44 -44
  197. data/data/Europe/Kyiv +124 -0
  198. data/data/Europe/Lisbon +25 -22
  199. data/data/Europe/Luxembourg +38 -36
  200. data/data/Europe/Monaco +9 -10
  201. data/data/Europe/Oslo +23 -21
  202. data/data/Europe/Paris +3 -3
  203. data/data/Europe/Rome +2 -2
  204. data/data/Europe/San_Marino +2 -2
  205. data/data/Europe/Simferopol +10 -10
  206. data/data/Europe/Stockholm +28 -5
  207. data/data/Europe/Uzhgorod +18 -17
  208. data/data/Europe/Vatican +2 -2
  209. data/data/Europe/Vienna +2 -2
  210. data/data/Europe/Volgograd +48 -47
  211. data/data/Europe/Zaporozhye +17 -18
  212. data/data/HST +8 -1
  213. data/data/Hongkong +19 -19
  214. data/data/Iceland +1 -68
  215. data/data/Indian/Antananarivo +5 -4
  216. data/data/Indian/Christmas +2 -1
  217. data/data/Indian/Cocos +4 -1
  218. data/data/Indian/Comoro +5 -4
  219. data/data/Indian/Kerguelen +2 -1
  220. data/data/Indian/Mahe +1 -1
  221. data/data/Indian/Mayotte +5 -4
  222. data/data/Indian/Reunion +1 -1
  223. data/data/Iran +8 -39
  224. data/data/Israel +37 -31
  225. data/data/MET +188 -139
  226. data/data/MST +12 -1
  227. data/data/MST7MDT +12 -3
  228. data/data/Mexico/BajaNorte +13 -7
  229. data/data/Mexico/BajaSur +5 -39
  230. data/data/Mexico/General +4 -36
  231. data/data/PRC +3 -1
  232. data/data/PST8PDT +39 -2
  233. data/data/Pacific/Apia +1 -36
  234. data/data/Pacific/Chuuk +2 -6
  235. data/data/Pacific/Easter +2 -2
  236. data/data/Pacific/Efate +5 -3
  237. data/data/Pacific/Enderbury +2 -2
  238. data/data/Pacific/Fiji +5 -40
  239. data/data/Pacific/Funafuti +1 -1
  240. data/data/Pacific/Kanton +4 -0
  241. data/data/Pacific/Majuro +1 -7
  242. data/data/Pacific/Niue +2 -3
  243. data/data/Pacific/Norfolk +42 -3
  244. data/data/Pacific/Pohnpei +1 -7
  245. data/data/Pacific/Ponape +1 -7
  246. data/data/Pacific/Rarotonga +3 -2
  247. data/data/Pacific/Tongatapu +3 -3
  248. data/data/Pacific/Truk +2 -6
  249. data/data/Pacific/Wake +1 -1
  250. data/data/Pacific/Wallis +1 -1
  251. data/data/Pacific/Yap +2 -6
  252. data/data/Portugal +25 -22
  253. data/data/ROK +9 -1
  254. data/data/Singapore +1 -1
  255. data/data/Turkey +22 -36
  256. data/data/UCT +1 -1
  257. data/data/US/Michigan +5 -1
  258. data/data/WET +106 -4
  259. data/lib/timezone/error.rb +6 -0
  260. data/lib/timezone/loader.rb +8 -5
  261. data/lib/timezone/lookup/geonames.rb +1 -0
  262. data/lib/timezone/lookup/google.rb +3 -2
  263. data/lib/timezone/lookup.rb +3 -2
  264. data/lib/timezone/parser.rb +33 -18
  265. data/lib/timezone/version.rb +1 -1
  266. data/lib/timezone/zone.rb +17 -17
  267. data/test/test_timezone.rb +2 -4
  268. data/test/timezone/lookup/test_geonames.rb +16 -9
  269. data/test/timezone/lookup/test_google.rb +7 -2
  270. data/test/timezone/lookup/test_test.rb +1 -0
  271. data/test/timezone/test_lookup.rb +5 -5
  272. data/test/timezone/test_zone.rb +4 -4
  273. data/timezone.gemspec +10 -5
  274. metadata +62 -16
  275. data/.travis.yml +0 -12
  276. data/data/US/Pacific-New +0 -189
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: b48eed9c736241dd17e86db3be2f336ab60ecf6f
4
- data.tar.gz: d65ba4fc29c78f7069897302622b77913ab6411e
2
+ SHA256:
3
+ metadata.gz: 8e220ce975f55c361db6a59350652d7cf3b371d7da29722e647179b15d635ee3
4
+ data.tar.gz: 78c7eea9cd550f1d121a98952d6eec36662caca4c015430a858935f60a025cc3
5
5
  SHA512:
6
- metadata.gz: cc5eb9b690b4acd66628788febce7aea1163fcf310d7e3507d40349be52c2c1329d23415b7d9d187707b06e1985defbf85d0a884de1c102f5bd4e595ba6d53bc
7
- data.tar.gz: ab3bfb8f44717faac6cd09d1c792c952f9bccbf53c1e15ef0dee1e514d68740243e5a8cd692d2a5598683ea502f245d5e331af66b75221539fc85d607d99ea40
6
+ metadata.gz: 56de3ca281c932f16df13c05c81fd2b85879e587192e487ac00da2f6a080da539ffb1817bfd378a37e80c3a5eb17ad5912656088f7808fcd9fedb4a00fe0a414
7
+ data.tar.gz: cc0ea4bf303824e6cd88a51dd440edc804472033c17e057943e175b41c292bfe5b96abfec1bbd263eda2ad19d6a64bfa5ef9775c4259fec921b528b9c2f5a772
data/.codeclimate.yml ADDED
@@ -0,0 +1,15 @@
1
+ version: "2" # required to adjust maintainability checks
2
+
3
+ checks:
4
+ argument-count:
5
+ enabled: true
6
+ config:
7
+ threshold: 5
8
+ method-complexity:
9
+ enabled: true
10
+ config:
11
+ threshold: 15
12
+ return-statements:
13
+ enabled: true
14
+ config:
15
+ threshold: 10
@@ -0,0 +1,40 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+ branches: [ master ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ ruby-version: ['2.5', '2.6', '2.7', '3.0', '3.1', '3.2', '3.3', '3.4']
15
+
16
+ steps:
17
+ - uses: actions/checkout@v2
18
+ - name: Set up Ruby
19
+ uses: ruby/setup-ruby@v1
20
+ with:
21
+ ruby-version: ${{ matrix.ruby-version }}
22
+ bundler-cache: true
23
+ - name: Run Tests
24
+ run: bundle exec rake utc test
25
+
26
+ rubocop:
27
+ runs-on: ubuntu-latest
28
+ strategy:
29
+ matrix:
30
+ ruby-version: ['3.0']
31
+
32
+ steps:
33
+ - uses: actions/checkout@v2
34
+ - name: Set up Ruby
35
+ uses: ruby/setup-ruby@v1
36
+ with:
37
+ ruby-version: ${{ matrix.ruby-version }}
38
+ bundler-cache: true
39
+ - name: Run Rubocop
40
+ run: bundle exec rubocop
data/.rubocop.yml CHANGED
@@ -1,8 +1,12 @@
1
+ require: rubocop-performance
2
+
1
3
  AllCops:
2
- TargetRubyVersion: 2.2
4
+ TargetRubyVersion: 2.4
5
+ NewCops: enable
6
+ SuggestExtensions: false
3
7
 
4
- Layout/AlignParameters:
5
- EnforcedStyle: with_fixed_indentation
8
+ Gemspec/RequiredRubyVersion:
9
+ Enabled: false
6
10
 
7
11
  Layout/EmptyLineBetweenDefs:
8
12
  Enabled: true
@@ -10,6 +14,9 @@ Layout/EmptyLineBetweenDefs:
10
14
  Layout/MultilineMethodCallIndentation:
11
15
  EnforcedStyle: indented
12
16
 
17
+ Layout/ParameterAlignment:
18
+ EnforcedStyle: with_fixed_indentation
19
+
13
20
  Layout/SpaceAfterComma:
14
21
  Enabled: true
15
22
 
@@ -23,6 +30,9 @@ Layout/SpaceBeforeSemicolon:
23
30
  Enabled: true
24
31
 
25
32
 
33
+ Lint/MissingSuper:
34
+ Enabled: false
35
+
26
36
  Lint/DuplicateMethods:
27
37
  Enabled: true
28
38
 
@@ -39,7 +49,7 @@ Metrics/ClassLength:
39
49
  # Offense count: 13
40
50
  # Configuration parameters: AllowHeredoc, AllowURI, URISchemes.
41
51
  # URISchemes: http, https
42
- Metrics/LineLength:
52
+ Layout/LineLength:
43
53
  Max: 80
44
54
 
45
55
  Metrics/MethodLength:
@@ -85,12 +95,21 @@ Style/NumericLiterals:
85
95
  Style/PreferredHashMethods:
86
96
  Enabled: true
87
97
 
98
+ Style/RedundantArgument:
99
+ Enabled: false
100
+
101
+ Style/RedundantFetchBlock:
102
+ Enabled: false
103
+
88
104
  Style/RedundantReturn:
89
105
  Enabled: true
90
106
 
91
107
  Style/RedundantSelf:
92
108
  Enabled: true
93
109
 
110
+ Style/SafeNavigation:
111
+ Enabled: false
112
+
94
113
  Style/SingleLineMethods:
95
114
  Enabled: false
96
115
 
@@ -103,7 +122,7 @@ Style/StringLiterals:
103
122
  Style/TrivialAccessors:
104
123
  Enabled: true
105
124
 
106
- Style/UnneededPercentQ:
125
+ Style/RedundantPercentQ:
107
126
  Enabled: true
108
127
 
109
128
  Style/DateTime:
data/CHANGES.markdown CHANGED
@@ -1,5 +1,110 @@
1
1
  # master (unreleased)
2
2
 
3
+ # 1.3.29
4
+
5
+ * Updated with `tzdata-2025b` ([@panthomakos][])
6
+
7
+ # 1.3.28
8
+
9
+ * Updated with `tzdata-2025a` ([@panthomakos][])
10
+
11
+ # 1.3.27
12
+
13
+ * Updated with `tzdata-2024b` ([@panthomakos][])
14
+
15
+ # 1.3.26
16
+
17
+ * Fix Rake 13/OpenStruct incompatibility ([@panthomakos][])
18
+
19
+ # 1.3.25
20
+
21
+ * Updated with `tzdata-2024a` ([@panthomakos][])
22
+
23
+ # 1.3.24
24
+
25
+ * Updated with `tzdata-2023d` ([@panthomakos][])
26
+
27
+ # 1.3.23
28
+
29
+ * Updated with `tzdata-2023c` ([@panthomakos][])
30
+
31
+ # 1.3.22
32
+
33
+ * Updated with `tzdata-2023b` ([@panthomakos][])
34
+
35
+ # 1.3.21
36
+
37
+ * Updated with `tzdata-2022g` ([@panthomakos][])
38
+
39
+ # 1.3.20
40
+
41
+ * Updated with `tzdata-2022f` ([@panthomakos][])
42
+
43
+ # 1.3.19
44
+
45
+ * Updated with `tzdata-2022e` ([@panthomakos][])
46
+
47
+ # 1.3.18
48
+
49
+ * Updated with `tzdata-2022d` ([@panthomakos][])
50
+
51
+ # 1.3.17
52
+
53
+ * Updated with `tzdata-2022c` ([@panthomakos][])
54
+
55
+ # 1.3.16
56
+
57
+ * Updated with `tzdata-2022a` ([@panthomakos][])
58
+
59
+ # 1.3.15
60
+
61
+ * Updated with `tzdata-2021e` ([@panthomakos][])
62
+
63
+ # 1.3.14
64
+
65
+ * Updated with `tzdata-2021d` ([@panthomakos][])
66
+
67
+ # 1.3.13
68
+
69
+ * Updated with `tzdata-2021c` ([@panthomakos][])
70
+
71
+ # 1.3.12
72
+
73
+ * Updated with `tzdata-2021a` ([@panthomakos][])
74
+
75
+ # 1.3.11
76
+
77
+ * Updated with `tzdata-2020f` ([@panthomakos][])
78
+
79
+ # 1.3.10
80
+
81
+ * Updated with `tzdata-2020d` ([@panthomakos][])
82
+
83
+ # 1.3.9
84
+
85
+ * Updated with `tzdata-2020c` ([@panthomakos][])
86
+
87
+ # 1.3.8
88
+
89
+ * Updated with `tzdata-2020b` ([@panthomakos][])
90
+
91
+ # 1.3.7
92
+
93
+ * Updated with `tzdata-2020a` ([@panthomakos][])
94
+
95
+ # 1.3.6
96
+
97
+ * Updated with `tzdata-2019c-1` ([@panthomakos][])
98
+
99
+ # 1.3.5
100
+
101
+ * Remove `@rules` from `Zone`'s `Marshall::dump`. ([@panthomakos][])
102
+ * Updated with `tzdata-2019b-1`. ([@panthomakos][])
103
+
104
+ # 1.3.4
105
+
106
+ * Updated with `tzdata-2019a-1`. (panthomakos)
107
+
3
108
  # 1.3.3
4
109
 
5
110
  * Updated with `tzdata-2018i-1`. (panthomakos)
@@ -205,3 +310,5 @@
205
310
  # 0.1.2
206
311
 
207
312
  * Fixed `#utc_offset` rule selection. (natemueller)
313
+
314
+ [@panthomakos]: https://github.com/panthomakos
@@ -6,12 +6,16 @@
6
6
 
7
7
  # How to Acquire New TZData Information
8
8
 
9
- * Download `tzdataXYZ.tar.gz` from [IANA](http://www.iana.org/time-zones).
10
- * Extract and use `zic` to load data into `/usr/share/zoneinfo`.
11
- * Run `bundle exec rake parse` to parse files in `right/` directory into
12
- the local `data` directory.
9
+ * Download and unzip the IANA timezone database (code and data) into the same directory. Use the timezone database README instructions to install. For example:
10
+
11
+ make TOPDIR=$HOME/Downloads/tz install
12
+
13
+ * Provide the root directory (TOPDIR) as the TZPATH environment variable. For example:
14
+
15
+ TZPATH=$HOME/Downloads/tz bundle exec rake parse
16
+
17
+ * Commit changes. For an example, see [this commit](https://github.com/panthomakos/timezone/commit/5815112d7a6c8740844189db0f05281e9c98f58f).
13
18
 
14
19
  # Notes
15
20
 
16
- * How to read TZData IANA source files:
17
- http://www.cstdbill.com/tzdb/tz-how-to.html
21
+ * How to read TZData IANA source files: http://www.cstdbill.com/tzdb/tz-how-to.html
data/README.markdown CHANGED
@@ -1,11 +1,13 @@
1
1
  # Timezone
2
+ ![ci](https://github.com/panthomakos/timezone/actions/workflows/ci.yml/badge.svg)
3
+ [![maintainability](https://api.codeclimate.com/v1/badges/d19a4a37dcbd373ac566/maintainability)](https://codeclimate.com/github/panthomakos/timezone/maintainability)
2
4
 
3
5
  Accurate current and history timezones for Ruby.
4
6
 
5
- * Uses [tz-database][tz-database] for up-to-date historical timezone calculations.
6
- * Uses the [geonames API][geonames-api] or the [Google Timezone API][google-api] for timezone latitude and longitude lookup.
7
+ * Uses [IANA Timezone Database][tz-database] for up-to-date historical timezone calculations.
8
+ * Uses the [Geonames API][geonames-api] or the [Google Timezone API][google-api] for timezone latitude and longitude lookup.
7
9
 
8
- [tz-database]: http://www.twinsun.com/tz/tz-link.htm
10
+ [tz-database]: https://www.iana.org/time-zones
9
11
  [geonames-api]: http://www.geonames.org/export/web-services.html
10
12
  [google-api]: https://developers.google.com/maps/documentation/timezone/
11
13
 
@@ -246,7 +248,3 @@ You can also provide a fallback lookup, which will be returned if you query an u
246
248
 
247
249
  ::Timezone::Lookup.lookup.default('America/Los_Angeles')
248
250
  => "America/Los_Angeles"
249
-
250
- ## Build Status [![Build Status](https://secure.travis-ci.org/panthomakos/timezone.png?branch=master)](http://travis-ci.org/panthomakos/timezone)
251
-
252
- ## Code Quality [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/panthomakos/timezone)
data/Rakefile CHANGED
@@ -19,7 +19,9 @@ task(:utc) { ENV['TZ'] = 'UTC' }
19
19
  task default: %i[utc test rubocop]
20
20
 
21
21
  task parse: :utc do
22
+ path = ENV['TZPATH'] || File.join(ENV['HOME'], 'Downloads', 'tz')
23
+
22
24
  require 'timezone/parser'
23
25
 
24
- Timezone::Parser.new.perform
26
+ Timezone::Parser.new(path).perform
25
27
  end
data/benchmark.rb CHANGED
@@ -4,42 +4,29 @@
4
4
  require 'benchmark'
5
5
  require 'timezone'
6
6
 
7
- def load_tz(timezone)
8
- Timezone.fetch(timezone)
9
- end
10
-
11
7
  puts 'Loading timezones'
12
8
 
13
- LOAD_ITERATIONS = 1_000
14
9
  Benchmark.bm do |x|
15
- x.report('la') { LOAD_ITERATIONS.times { load_tz('America/Los_Angeles') } }
16
- x.report('hk') { LOAD_ITERATIONS.times { load_tz('Asia/Hong_Kong') } }
17
- end
18
-
19
- def calc_local(timezone)
20
- timezone.time(Time.utc(3000, 1, 1))
10
+ x.report('la') { 10_000.times { Timezone.fetch('America/Los_Angeles') } }
11
+ x.report('hk') { 10_000.times { Timezone.fetch('Asia/Hong_Kong') } }
21
12
  end
22
13
 
23
- puts 'Calculating LOCAL'
24
-
25
- LOCAL_ITERATIONS = 10_000
26
- Benchmark.bm do |x|
27
- timezone = Timezone.fetch('America/Los_Angeles')
28
- x.report('la') { LOCAL_ITERATIONS.times { calc_local(timezone) } }
29
- timezone = Timezone.fetch('Asia/Hong_Kong')
30
- x.report('hk') { LOCAL_ITERATIONS.times { calc_local(timezone) } }
14
+ def calc(method, timezone, time)
15
+ timezone.public_send(method, time)
31
16
  end
32
17
 
33
- def calc_utc(timezone)
34
- timezone.local_to_utc(Time.utc(3000, 1, 1))
18
+ def bench(iterations, method)
19
+ Benchmark.bm do |x|
20
+ time = Time.utc(3000, 1, 1)
21
+ timezone = Timezone.fetch('America/Los_Angeles')
22
+ x.report('la') { iterations.times { calc(method, timezone, time) } }
23
+ timezone = Timezone.fetch('Asia/Hong_Kong')
24
+ x.report('hk') { iterations.times { calc(method, timezone, time) } }
25
+ end
35
26
  end
36
27
 
37
- puts 'Calculating UTC'
28
+ puts 'Calculating LOCAL (#time)'
29
+ bench(10_000, :time)
38
30
 
39
- UTC_ITERATIONS = 10_000
40
- Benchmark.bm do |x|
41
- timezone = Timezone.fetch('America/Los_Angeles')
42
- x.report('la') { UTC_ITERATIONS.times { calc_utc(timezone) } }
43
- timezone = Timezone.fetch('Asia/Hong_Kong')
44
- x.report('hk') { UTC_ITERATIONS.times { calc_utc(timezone) } }
45
- end
31
+ puts 'Calculating UTC (#local_to_utc)'
32
+ bench(10_000, :local_to_utc)
data/data/Africa/Accra CHANGED
@@ -1,48 +1,2 @@
1
- -1640995149:LMT:0:-52
2
- 84153548:GMT:0:0
3
- 10453200:+0020:1:1200
4
- 21082800:GMT:0:0
5
- 10453200:+0020:1:1200
6
- 21082800:GMT:0:0
7
- 10453200:+0020:1:1200
8
- 21082800:GMT:0:0
9
- 10453200:+0020:1:1200
10
- 21169200:GMT:0:0
11
- 10453200:+0020:1:1200
12
- 21082800:GMT:0:0
13
- 10453200:+0020:1:1200
14
- 21082800:GMT:0:0
15
- 10453200:+0020:1:1200
16
- 21082800:GMT:0:0
17
- 10453200:+0020:1:1200
18
- 21169200:GMT:0:0
19
- 10453200:+0020:1:1200
20
- 21082800:GMT:0:0
21
- 10453200:+0020:1:1200
22
- 21082800:GMT:0:0
23
- 10453200:+0020:1:1200
24
- 21082800:GMT:0:0
25
- 10453200:+0020:1:1200
26
- 21169200:GMT:0:0
27
- 10453200:+0020:1:1200
28
- 21082800:GMT:0:0
29
- 10453200:+0020:1:1200
30
- 21082800:GMT:0:0
31
- 10453200:+0020:1:1200
32
- 21082800:GMT:0:0
33
- 10453200:+0020:1:1200
34
- 21169200:GMT:0:0
35
- 10453200:+0020:1:1200
36
- 21082800:GMT:0:0
37
- 10453200:+0020:1:1200
38
- 21082800:GMT:0:0
39
- 10453200:+0020:1:1200
40
- 21082800:GMT:0:0
41
- 10453200:+0020:1:1200
42
- 21169200:GMT:0:0
43
- 10453200:+0020:1:1200
44
- 21082800:GMT:0:0
45
- 10453200:+0020:1:1200
46
- 21082800:GMT:0:0
47
- 10453200:+0020:1:1200
1
+ -1830383033:LMT:0:-968
48
2
  1:GMT:0:0
@@ -1,5 +1,6 @@
1
- -1309746437:LMT:0:8836
2
- 47431636:EAT:0:10800
3
- 315534600:+0230:0:9000
4
- 631151100:+0245:0:9900
1
+ -1946168837:LMT:0:8836
2
+ 636422236:+0230:0:9000
3
+ 47777400:EAT:0:10800
4
+ 220581000:+0230:0:9000
5
+ 176082300:+0245:0:9900
5
6
  1:EAT:0:10800
data/data/Africa/Algiers CHANGED
@@ -1,5 +1,5 @@
1
- -2486679073:LMT:0:732
2
- 630720111:PMT:0:561
1
+ -2486592733:LMT:0:732
2
+ 630633771:PMT:0:561
3
3
  166144161:WET:0:0
4
4
  9417600:WEST:1:3600
5
5
  15033600:WET:0:0
data/data/Africa/Asmara CHANGED
@@ -1,5 +1,6 @@
1
- -1309746437:LMT:0:8836
2
- 47431636:EAT:0:10800
3
- 315534600:+0230:0:9000
4
- 631151100:+0245:0:9900
1
+ -1946168837:LMT:0:8836
2
+ 636422236:+0230:0:9000
3
+ 47777400:EAT:0:10800
4
+ 220581000:+0230:0:9000
5
+ 176082300:+0245:0:9900
5
6
  1:EAT:0:10800
data/data/Africa/Asmera CHANGED
@@ -1,5 +1,6 @@
1
- -1309746437:LMT:0:8836
2
- 47431636:EAT:0:10800
3
- 315534600:+0230:0:9000
4
- 631151100:+0245:0:9900
1
+ -1946168837:LMT:0:8836
2
+ 636422236:+0230:0:9000
3
+ 47777400:EAT:0:10800
4
+ 220581000:+0230:0:9000
5
+ 176082300:+0245:0:9900
5
6
  1:EAT:0:10800
data/data/Africa/Bangui CHANGED
@@ -1,2 +1,5 @@
1
- -1588464817:LMT:0:816
1
+ -2035584816:LMT:0:815
2
+ 94695215:GMT:0:0
3
+ 173663185:LMT:0:815
4
+ 178760615:+0030:0:1800
2
5
  1:WAT:0:3600
data/data/Africa/Blantyre CHANGED
@@ -1,2 +1,2 @@
1
- -2109291021:LMT:0:7820
1
+ -1924999819:LMT:0:7818
2
2
  1:CAT:0:7200
@@ -1,2 +1,5 @@
1
- -1588464817:LMT:0:816
1
+ -2035584816:LMT:0:815
2
+ 94695215:GMT:0:0
3
+ 173663185:LMT:0:815
4
+ 178760615:+0030:0:1800
2
5
  1:WAT:0:3600
@@ -1,2 +1,2 @@
1
- -2109291021:LMT:0:7820
1
+ -1924999819:LMT:0:7818
2
2
  1:CAT:0:7200
data/data/Africa/Cairo CHANGED
@@ -125,4 +125,36 @@
125
125
  3625200:EEST:1:10800
126
126
  3027600:EET:0:7200
127
127
  4834800:EEST:1:10800
128
+ 270954000:EET:0:7200
129
+ 15721200:EEST:1:10800
130
+ 15728400:EET:0:7200
131
+ 16326000:EEST:1:10800
132
+ 15123600:EET:0:7200
133
+ 16326000:EEST:1:10800
134
+ 15123600:EET:0:7200
135
+ 16326000:EEST:1:10800
136
+ 15728400:EET:0:7200
137
+ 15721200:EEST:1:10800
138
+ 15728400:EET:0:7200
139
+ 15721200:EEST:1:10800
140
+ 15728400:EET:0:7200
141
+ 15721200:EEST:1:10800
142
+ 15728400:EET:0:7200
143
+ 16326000:EEST:1:10800
144
+ 15123600:EET:0:7200
145
+ 16326000:EEST:1:10800
146
+ 15728400:EET:0:7200
147
+ 15721200:EEST:1:10800
148
+ 15728400:EET:0:7200
149
+ 15721200:EEST:1:10800
150
+ 15728400:EET:0:7200
151
+ 15721200:EEST:1:10800
152
+ 15728400:EET:0:7200
153
+ 15721200:EEST:1:10800
154
+ 15728400:EET:0:7200
155
+ 16326000:EEST:1:10800
156
+ 15123600:EET:0:7200
157
+ 16326000:EEST:1:10800
158
+ 15728400:EET:0:7200
159
+ 15721200:EEST:1:10800
128
160
  1:EET:0:7200
@@ -56,8 +56,8 @@
56
56
  16329600:+01:0:3600
57
57
  3024000:+00:1:0
58
58
  27216000:+01:0:3600
59
- 3024000:+00:1:0
60
- 27820800:+01:0:3600
59
+ 3628800:+00:1:0
60
+ 27216000:+01:0:3600
61
61
  3024000:+00:1:0
62
62
  27216000:+01:0:3600
63
63
  3628800:+00:1:0
@@ -72,8 +72,8 @@
72
72
  27820800:+01:0:3600
73
73
  3024000:+00:1:0
74
74
  27216000:+01:0:3600
75
- 3024000:+00:1:0
76
- 27820800:+01:0:3600
75
+ 3628800:+00:1:0
76
+ 27216000:+01:0:3600
77
77
  3024000:+00:1:0
78
78
  27216000:+01:0:3600
79
79
  3628800:+00:1:0
@@ -88,9 +88,11 @@
88
88
  27216000:+01:0:3600
89
89
  3628800:+00:1:0
90
90
  27216000:+01:0:3600
91
- 3024000:+00:1:0
92
- 27820800:+01:0:3600
91
+ 3628800:+00:1:0
92
+ 27216000:+01:0:3600
93
93
  3024000:+00:1:0
94
94
  27216000:+01:0:3600
95
95
  3628800:+00:1:0
96
+ 27216000:+01:0:3600
97
+ 3024000:+00:1:0
96
98
  1:+01:0:3600
@@ -1,5 +1,6 @@
1
- -1309746437:LMT:0:8836
2
- 47431636:EAT:0:10800
3
- 315534600:+0230:0:9000
4
- 631151100:+0245:0:9900
1
+ -1946168837:LMT:0:8836
2
+ 636422236:+0230:0:9000
3
+ 47777400:EAT:0:10800
4
+ 220581000:+0230:0:9000
5
+ 176082300:+0245:0:9900
5
6
  1:EAT:0:10800
data/data/Africa/Djibouti CHANGED
@@ -1,5 +1,6 @@
1
- -1309746437:LMT:0:8836
2
- 47431636:EAT:0:10800
3
- 315534600:+0230:0:9000
4
- 631151100:+0245:0:9900
1
+ -1946168837:LMT:0:8836
2
+ 636422236:+0230:0:9000
3
+ 47777400:EAT:0:10800
4
+ 220581000:+0230:0:9000
5
+ 176082300:+0245:0:9900
5
6
  1:EAT:0:10800
data/data/Africa/Douala CHANGED
@@ -1,2 +1,5 @@
1
- -1588464817:LMT:0:816
1
+ -2035584816:LMT:0:815
2
+ 94695215:GMT:0:0
3
+ 173663185:LMT:0:815
4
+ 178760615:+0030:0:1800
2
5
  1:WAT:0:3600
data/data/Africa/El_Aaiun CHANGED
@@ -45,8 +45,8 @@
45
45
  16329600:+01:0:3600
46
46
  3024000:+00:1:0
47
47
  27216000:+01:0:3600
48
- 3024000:+00:1:0
49
- 27820800:+01:0:3600
48
+ 3628800:+00:1:0
49
+ 27216000:+01:0:3600
50
50
  3024000:+00:1:0
51
51
  27216000:+01:0:3600
52
52
  3628800:+00:1:0
@@ -61,8 +61,8 @@
61
61
  27820800:+01:0:3600
62
62
  3024000:+00:1:0
63
63
  27216000:+01:0:3600
64
- 3024000:+00:1:0
65
- 27820800:+01:0:3600
64
+ 3628800:+00:1:0
65
+ 27216000:+01:0:3600
66
66
  3024000:+00:1:0
67
67
  27216000:+01:0:3600
68
68
  3628800:+00:1:0
@@ -77,9 +77,11 @@
77
77
  27216000:+01:0:3600
78
78
  3628800:+00:1:0
79
79
  27216000:+01:0:3600
80
- 3024000:+00:1:0
81
- 27820800:+01:0:3600
80
+ 3628800:+00:1:0
81
+ 27216000:+01:0:3600
82
82
  3024000:+00:1:0
83
83
  27216000:+01:0:3600
84
84
  3628800:+00:1:0
85
+ 27216000:+01:0:3600
86
+ 3024000:+00:1:0
85
87
  1:+01:0:3600
data/data/Africa/Gaborone CHANGED
@@ -1,2 +1,2 @@
1
- -2109291021:LMT:0:7820
1
+ -1924999819:LMT:0:7818
2
2
  1:CAT:0:7200
data/data/Africa/Harare CHANGED
@@ -1,2 +1,2 @@
1
- -2109291021:LMT:0:7820
1
+ -1924999819:LMT:0:7818
2
2
  1:CAT:0:7200
data/data/Africa/Juba CHANGED
@@ -32,4 +32,5 @@
32
32
  16851600:CAT:0:7200
33
33
  14684400:CAST:1:10800
34
34
  449758800:CAT:0:7200
35
- 1:EAT:0:10800
35
+ 664196400:EAT:0:10800
36
+ 1:CAT:0:7200
data/data/Africa/Kampala CHANGED
@@ -1,5 +1,6 @@
1
- -1309746437:LMT:0:8836
2
- 47431636:EAT:0:10800
3
- 315534600:+0230:0:9000
4
- 631151100:+0245:0:9900
1
+ -1946168837:LMT:0:8836
2
+ 636422236:+0230:0:9000
3
+ 47777400:EAT:0:10800
4
+ 220581000:+0230:0:9000
5
+ 176082300:+0245:0:9900
5
6
  1:EAT:0:10800
data/data/Africa/Kigali CHANGED
@@ -1,2 +1,2 @@
1
- -2109291021:LMT:0:7820
1
+ -1924999819:LMT:0:7818
2
2
  1:CAT:0:7200