File Coverage

lib/DateTime/TimeZone/Catalog/Extend.pm
Criterion Covered Total %
statement 67 148 45.2
branch 13 130 10.0
condition 6 40 15.0
subroutine 15 18 83.3
pod 2 2 100.0
total 103 338 30.4


line stmt bran cond sub pod time code
1             ##----------------------------------------------------------------------------
2             ## Extend DateTime::TimeZone catalog - ~/lib/DateTime/TimeZone/Catalog/Extend.pm
3             ## Version v0.3.0
4             ## Copyright(c) 2022 DEGUEST Pte. Ltd.
5             ## Author: Jacques Deguest <jack@deguest.jp>
6             ## Created 2022/11/29
7             ## Modified 2022/12/06
8             ## All rights reserved
9             ##
10             ##
11             ## This program is free software; you can redistribute it and/or modify it
12             ## under the same terms as Perl itself.
13             ##----------------------------------------------------------------------------
14             package DateTime::TimeZone::Catalog::Extend;
15             BEGIN
16             {
17 1     1   486412 use strict;
  1         2  
  1         47  
18 1     1   7 use warnings;
  1         2  
  1         27  
19 1     1   7 use warnings::register;
  1         3  
  1         120  
20 1     1   7 use Exporter ();
  1         2  
  1         28  
21 1     1   5 use vars qw( $VERSION @ISA $ALIAS_CATALOG $ZONE_MAP );
  1         2  
  1         85  
22 1     1   1487571 our @ISA = qw( Exporter );
23 1     1   573 use DateTime::TimeZone::Alias;
  1         1060  
  1         12  
24 1     1   36 use Nice::Try;
  1         3  
  1         7  
25 1         42 our $VERSION = 'v0.3.0';
26             };
27              
28 1     1   14 use strict;
  1         11  
  1         30  
29 1     1   8 use warnings;
  1         8  
  1         38  
30 1     1   7 use utf8;
  1         3  
  1         11  
31              
32             # <https://en.wikipedia.org/wiki/List_of_time_zone_abbreviations>
33             $ALIAS_CATALOG =
34             {
35             "A" => { comment => "Alpha Military Time Zone", offset => ["+0100"] },
36             "ACDT" => {
37             comment => "Australian Central Daylight Saving Time",
38             offset => ["+10:30"],
39             },
40             "ACST" => { comment => "Australian Central Standard Time", offset => ["+09:30"] },
41             "ACT" => { comment => "ASEAN Common Time", offset => ["+08:00"] },
42             "ACWST" => {
43             comment => "Australian Central Western Standard Time",
44             offset => ["+08:45"],
45             },
46             "ADT" => { comment => "Atlantic Daylight Time", offset => ["-03:00"] },
47             "AEDT" => {
48             comment => "Australian Eastern Daylight Saving Time",
49             offset => ["+11:00"],
50             },
51             "AES" => { comment => "Australian Eastern Standard Time", offset => ["+10:00"] },
52             "AEST" => { comment => "Australian Eastern Standard Time", offset => ["+10:00"] },
53             "AET" => {
54             comment => "Australian Eastern Time",
55             offset => ["+10:00", "+11:00"],
56             },
57             "AFT" => { comment => "Afghanistan Time", offset => ["+04:30"] },
58             "AHDT" => { comment => "Alaska-Hawaii Daylight Time", offset => ["-0900"] },
59             "AHST" => { comment => "Alaska-Hawaii Standard Time", offset => [-1000] },
60             "AKDT" => { comment => "Alaska Daylight Time", offset => ["-08:00"] },
61             "AKST" => { comment => "Alaska Standard Time", offset => ["-09:00"] },
62             "ALMT" => { comment => "Alma-Ata Time", offset => ["+06:00"] },
63             "AMST" => { comment => "Amazon Summer Time (Brazil)", offset => ["-03:00"] },
64             "AMT" => { comment => "Armenia Time", offset => ["+04:00"] },
65             "ANAST" => { comment => "Anadyr Summer Time", offset => ["+1300"] },
66             "ANAT" => { comment => "Anadyr Time", offset => ["+12:00"] },
67             "AQTT" => { comment => "Aqtobe Time", offset => ["+05:00"] },
68             "ART" => { comment => "Argentina Time", offset => ["-03:00"] },
69             "AST" => { comment => "Atlantic Standard Time", offset => ["-04:00"] },
70             "AT" => { comment => "Azores Time", offset => ["-0100"] },
71             "AWST" => { comment => "Australian Western Standard Time", offset => ["+08:00"] },
72             "AZOST" => { comment => "Azores Summer Time", offset => ["UTC"] },
73             "AZOT" => { comment => "Azores Standard Time", offset => ["-01:00"] },
74             "AZST" => { comment => "Azerbaijan Summer Time", offset => ["+0500"] },
75             "AZT" => { comment => "Azerbaijan Time", offset => ["+04:00"] },
76             "B" => { comment => "Bravo Military Time Zone", offset => ["+0200"] },
77             "BADT" => { comment => "Baghdad Daylight Time", offset => ["+0400"] },
78             "BAT" => { comment => "Baghdad Time", offset => ["+0600"] },
79             "BDST" => { comment => "British Double Summer Time", offset => ["+0200"] },
80             "BDT" => { comment => "Bangladesh Time", offset => ["+0600"] },
81             "BET" => { comment => "Bering Standard Time", offset => [-1100] },
82             "BIOT" => { comment => "British Indian Ocean Time", offset => ["+06:00"] },
83             "BIT" => { comment => "Baker Island Time", offset => ["-12:00"] },
84             "BNT" => { comment => "Brunei Time", offset => ["+08:00"] },
85             "BORT" => { comment => "Borneo Time (Indonesia)", offset => ["+0800"] },
86             "BOT" => { comment => "Bolivia Time", offset => ["-04:00"] },
87             "BRA" => { comment => "Brazil Time", offset => ["-0300"] },
88             "BRST" => { comment => "Brasília Summer Time", offset => ["-02:00"] },
89             "BRT" => { comment => "Brasília Time", offset => ["-03:00"] },
90             "BST" => {
91             comment => "British Summer Time (British Standard Time from Feb 1968 to Oct 1971)",
92             offset => ["+01:00"],
93             },
94             "BTT" => { comment => "Bhutan Time", offset => ["+06:00"] },
95             "C" => { comment => "Charlie Military Time Zone", offset => ["+0300"] },
96             "CAST" => { comment => "Casey Time Zone", offset => ["+0930"] },
97             "CAT" => { comment => "Central Africa Time", offset => ["+02:00"] },
98             "CCT" => { comment => "Cocos Islands Time", offset => ["+06:30"] },
99             "CDT" => { comment => "Cuba Daylight Time", offset => ["-04:00"] },
100             "CEST" => { comment => "Central European Summer Time", offset => ["+02:00"] },
101             "CET" => { comment => "Central European Time", offset => ["+01:00"] },
102             "CETDST" => { comment => "Central Europe Summer Time", offset => ["+0200"] },
103             "CHADT" => { comment => "Chatham Daylight Time", offset => ["+13:45"] },
104             "CHAST" => { comment => "Chatham Standard Time", offset => ["+12:45"] },
105             "CHOST" => { comment => "Choibalsan Summer Time", offset => ["+09:00"] },
106             "CHOT" => { comment => "Choibalsan Standard Time", offset => ["+08:00"] },
107             "CHST" => { comment => "Chamorro Standard Time", offset => ["+10:00"] },
108             "ChST" => { comment => "Chamorro Standard Time", offset => ["+1000"] },
109             "CHUT" => { comment => "Chuuk Time", offset => ["+10:00"] },
110             "CIST" => { comment => "Clipperton Island Standard Time", offset => ["-08:00"] },
111             "CKT" => { comment => "Cook Island Time", offset => ["-10:00"] },
112             "CLST" => { comment => "Chile Summer Time", offset => ["-03:00"] },
113             "CLT" => { comment => "Chile Standard Time", offset => ["-04:00"] },
114             "COST" => { comment => "Colombia Summer Time", offset => ["-04:00"] },
115             "COT" => { comment => "Colombia Time", offset => ["-05:00"] },
116             "CST" => { comment => "Cuba Standard Time", offset => ["-05:00"] },
117             "CSuT" => { comment => "Australian Central Daylight", offset => ["+1030"] },
118             "CT" => { comment => "Central Time", offset => ["-06:00", "-05:00"] },
119             "CUT" => { comment => "Coordinated Universal Time", offset => ["+0000"] },
120             "CVT" => { comment => "Cape Verde Time", offset => ["-01:00"] },
121             "CWST" => {
122             comment => "Central Western Standard Time (Australia)",
123             offset => ["+08:45"],
124             },
125             "CXT" => { comment => "Christmas Island Time", offset => ["+07:00"] },
126             "D" => { comment => "Delta Military Time Zone", offset => ["+0400"] },
127             "DAVT" => { comment => "Davis Time", offset => ["+07:00"] },
128             "DDUT" => { comment => "Dumont d'Urville Time", offset => ["+10:00"] },
129             "DFT" => {
130             comment => "AIX-specific equivalent of Central European Time",
131             offset => ["+01:00"],
132             },
133             "DNT" => { comment => "Dansk Normal", offset => ["+0100"] },
134             "DST" => { comment => "Dansk Summer", offset => ["+0200"] },
135             "E" => { comment => "Echo Military Time Zone", offset => ["+0500"] },
136             "EASST" => { comment => "Easter Island Summer Time", offset => ["-05:00"] },
137             "EAST" => { comment => "Easter Island Standard Time", offset => ["-06:00"] },
138             "EAT" => { comment => "East Africa Time", offset => ["+03:00"] },
139             "ECT" => { comment => "Ecuador Time", offset => ["-05:00"] },
140             "EDT" => {
141             comment => "Eastern Daylight Time (North America)",
142             offset => ["-04:00"],
143             },
144             "EEST" => { comment => "Eastern European Summer Time", offset => ["+03:00"] },
145             "EET" => { comment => "Eastern European Time", offset => ["+02:00"] },
146             "EETDST" => { comment => "European Eastern Summer", offset => ["+0300"] },
147             "EGST" => { comment => "Eastern Greenland Summer Time", offset => ["UTC"] },
148             "EGT" => { comment => "Eastern Greenland Time", offset => ["-01:00"] },
149             "EMT" => { comment => "Norway Time", offset => ["+0100"] },
150             "EST" => {
151             comment => "Eastern Standard Time (North America)",
152             offset => ["-05:00"],
153             },
154             "ESuT" => { comment => "Australian Eastern Daylight", offset => ["+1100"] },
155             "ET" => { comment => "Eastern Time (North America)", offset => ["-04:00"] },
156             "F" => { comment => "Foxtrot Military Time Zone", offset => ["+0600"] },
157             "FET" => { comment => "Further-eastern European Time", offset => ["+03:00"] },
158             "FJST" => { comment => "Fiji Summer Time", offset => ["+1300"] },
159             "FJT" => { comment => "Fiji Time", offset => ["+12:00"] },
160             "FKST" => { comment => "Falkland Islands Summer Time", offset => ["-03:00"] },
161             "FKT" => { comment => "Falkland Islands Time", offset => ["-04:00"] },
162             "FNT" => { comment => "Fernando de Noronha Time", offset => ["-02:00"] },
163             "FWT" => { comment => "French Winter Time", offset => ["+0100"] },
164             "G" => { comment => "Golf Military Time Zone", offset => ["+0700"] },
165             "GALT" => { comment => "Galapagos Time", offset => ["-06:00"] },
166             "GAMT" => { comment => "Gambier Islands Time", offset => ["-09:00"] },
167             "GEST" => { comment => "Georgia Summer Time", offset => ["+0500"] },
168             "GET" => { comment => "Georgia Standard Time", offset => ["+04:00"] },
169             "GFT" => { comment => "French Guiana Time", offset => ["-03:00"] },
170             "GILT" => { comment => "Gilbert Island Time", offset => ["+12:00"] },
171             "GIT" => { comment => "Gambier Island Time", offset => ["-09:00"] },
172             "GMT" => { comment => "Greenwich Mean Time", offset => ["UTC"] },
173             "GST" => { comment => "Gulf Standard Time", offset => ["+04:00"] },
174             "GT" => { comment => "Greenwich Time", offset => ["+0000"] },
175             "GYT" => { comment => "Guyana Time", offset => ["-04:00"] },
176             "GZ" => { comment => "Greenwichzeit", offset => ["+0000"] },
177             "H" => { comment => "Hotel Military Time Zone", offset => ["+0800"] },
178             "HAA" => { comment => "Heure Avanc\xE9e de l'Atlantique", offset => ["-0300"] },
179             "HAC" => { comment => "Heure Avancee du Centre", offset => ["-0500"] },
180             "HAE" => { comment => "Heure Avancee de l'Est", offset => ["-0400"] },
181             "HAEC" => {
182             comment => "Heure Avanc\xE9e d'Europe Centrale",
183             offset => ["+02:00"],
184             },
185             "HAP" => { comment => "Heure Avancee du Pacifique", offset => ["-0700"] },
186             "HAR" => { comment => "Heure Avancee des Rocheuses", offset => ["-0600"] },
187             "HAT" => { comment => "Heure Avancee de Terre-Neuve", offset => ["-0230"] },
188             "HAY" => { comment => "Heure Avancee du Yukon", offset => ["-0800"] },
189             "HDT" => {
190             comment => "Hawaii\x{2013}Aleutian Daylight Time",
191             offset => ["-09:00"],
192             },
193             "HFE" => { comment => "Heure Fancais d'Ete", offset => ["+0200"] },
194             "HFH" => { comment => "Heure Fancais d'Hiver", offset => ["+0100"] },
195             "HG" => { comment => "Heure de Greenwich", offset => ["+0000"] },
196             "HKT" => { comment => "Hong Kong Time", offset => ["+08:00"] },
197             "HL" => { comment => "Heure locale", offset => ["local"] },
198             "HMT" => { comment => "Heard and McDonald Islands Time", offset => ["+05:00"] },
199             "HNA" => { comment => "Heure Normale de l'Atlantique", offset => ["-0400"] },
200             "HNC" => { comment => "Heure Normale du Centre", offset => ["-0600"] },
201             "HNE" => { comment => "Heure Normale de l'Est", offset => ["-0500"] },
202             "HNP" => { comment => "Heure Normale du Pacifique", offset => ["-0800"] },
203             "HNR" => { comment => "Heure Normale des Rocheuses", offset => ["-0700"] },
204             "HNT" => { comment => "Heure Normale de Terre-Neuve", offset => ["-0330"] },
205             "HNY" => { comment => "Heure Normale du Yukon", offset => ["-0900"] },
206             "HOE" => { comment => "Spain Time", offset => ["+0100"] },
207             "HOVST" => {
208             comment => "Hovd Summer Time (not used from 2017-present)",
209             offset => ["+08:00"],
210             },
211             "HOVT" => { comment => "Hovd Time", offset => ["+07:00"] },
212             "HST" => {
213             comment => "Hawaii\x{2013}Aleutian Standard Time",
214             offset => ["-10:00"],
215             },
216             "I" => { comment => "India Military Time Zone", offset => ["+0900"] },
217             "ICT" => { comment => "Indochina Time", offset => ["+07:00"] },
218             "IDLE" => { comment => "Internation Date Line East", offset => ["+1200"] },
219             "IDLW" => {
220             comment => "International Day Line West time zone",
221             offset => ["-12:00"],
222             },
223             "IDT" => { comment => "Israel Daylight Time", offset => ["+03:00"] },
224             "IOT" => { comment => "Indian Ocean Time", offset => ["+03:00"] },
225             "IRDT" => { comment => "Iran Daylight Time", offset => ["+04:30"] },
226             "IRKST" => { comment => "Irkutsk Summer Time", offset => ["+0900"] },
227             "IRKT" => { comment => "Irkutsk Time", offset => ["+08:00"] },
228             "IRST" => { comment => "Iran Standard Time", offset => ["+03:30"] },
229             "IRT" => { comment => "Iran Time", offset => ["+0330"] },
230             "IST" => { comment => "Israel Standard Time", offset => ["+02:00"] },
231             "IT" => { comment => "Iran Time", offset => ["+0330"] },
232             "ITA" => { comment => "Italy Time", offset => ["+0100"] },
233             "JAVT" => { comment => "Java Time", offset => ["+0700"] },
234             "JAYT" => { comment => "Jayapura Time (Indonesia)", offset => ["+0900"] },
235             "JST" => { comment => "Japan Standard Time", offset => ["+09:00"] },
236             "JT" => { comment => "Java Time", offset => ["+0700"] },
237             "K" => { comment => "Kilo Military Time Zone", offset => ["+1000"] },
238             "KALT" => { comment => "Kaliningrad Time", offset => ["+02:00"] },
239             "KDT" => { comment => "Korean Daylight Time", offset => ["+1000"] },
240             "KGST" => { comment => "Kyrgyzstan Summer Time", offset => ["+0600"] },
241             "KGT" => { comment => "Kyrgyzstan Time", offset => ["+06:00"] },
242             "KOST" => { comment => "Kosrae Time", offset => ["+11:00"] },
243             "KRAST" => { comment => "Krasnoyarsk Summer Time", offset => ["+0800"] },
244             "KRAT" => { comment => "Krasnoyarsk Time", offset => ["+07:00"] },
245             "KST" => { comment => "Korea Standard Time", offset => ["+09:00"] },
246             "L" => { comment => "Lima Military Time Zone", offset => ["+1100"] },
247             "LHDT" => { comment => "Lord Howe Daylight Time", offset => ["+1100"] },
248             "LHST" => { comment => "Lord Howe Summer Time", offset => ["+11:00"] },
249             "LIGT" => { comment => "Melbourne, Australia", offset => ["+1000"] },
250             "LINT" => { comment => "Line Islands Time", offset => ["+14:00"] },
251             "LKT" => { comment => "Lanka Time", offset => ["+0600"] },
252             "LST" => { comment => "Local Sidereal Time", offset => ["local"] },
253             "LT" => { comment => "Local Time", offset => ["local"] },
254             "M" => { comment => "Mike Military Time Zone", offset => ["+1200"] },
255             "MAGST" => { comment => "Magadan Summer Time", offset => ["+1200"] },
256             "MAGT" => { comment => "Magadan Time", offset => ["+12:00"] },
257             "MAL" => { comment => "Malaysia Time", offset => ["+0800"] },
258             "MART" => { comment => "Marquesas Islands Time", offset => ["-09:30"] },
259             "MAT" => { comment => "Turkish Standard Time", offset => ["+0300"] },
260             "MAWT" => { comment => "Mawson Station Time", offset => ["+05:00"] },
261             "MDT" => {
262             comment => "Mountain Daylight Time (North America)",
263             offset => ["-06:00"],
264             },
265             "MED" => { comment => "Middle European Daylight", offset => ["+0200"] },
266             "MEDST" => { comment => "Middle European Summer", offset => ["+0200"] },
267             "MEST" => { comment => "Middle European Summer Time", offset => ["+02:00"] },
268             "MESZ" => { comment => "Mitteieuropaische Sommerzeit", offset => ["+0200"] },
269             "MET" => { comment => "Middle European Time", offset => ["+01:00"] },
270             "MEWT" => { comment => "Middle European Winter Time", offset => ["+0100"] },
271             "MEX" => { comment => "Mexico Time", offset => ["-0600"] },
272             "MEZ" => { comment => "Mitteieuropaische Zeit", offset => ["+0100"] },
273             "MHT" => { comment => "Marshall Islands Time", offset => ["+12:00"] },
274             "MIST" => { comment => "Macquarie Island Station Time", offset => ["+11:00"] },
275             "MIT" => { comment => "Marquesas Islands Time", offset => ["-09:30"] },
276             "MMT" => { comment => "Myanmar Standard Time", offset => ["+06:30"] },
277             "MPT" => { comment => "North Mariana Islands Time", offset => ["+1000"] },
278             "MSD" => { comment => "Moscow Summer Time", offset => ["+0400"] },
279             "MSK" => { comment => "Moscow Time", offset => ["+03:00"] },
280             "MSKS" => { comment => "Moscow Summer Time", offset => ["+0400"] },
281             "MST" => { comment => "Mountain Standard Time", offset => ["-07:00"] },
282             "MT" => { comment => "Moluccas", offset => ["+0830"] },
283             "MUT" => { comment => "Mauritius Time", offset => ["+04:00"] },
284             "MVT" => { comment => "Maldives Time", offset => ["+05:00"] },
285             "MYT" => { comment => "Malaysia Time", offset => ["+08:00"] },
286             "N" => { comment => "November Military Time Zone", offset => ["-0100"] },
287             "NCT" => { comment => "New Caledonia Time", offset => ["+11:00"] },
288             "NDT" => { comment => "Newfoundland Daylight Time", offset => ["-02:30"] },
289             "NFT" => { comment => "Norfolk Island Time", offset => ["+11:00"] },
290             "NOR" => { comment => "Norway Time", offset => ["+0100"] },
291             "NOVST" => { comment => "Novosibirsk Summer Time (Russia)", offset => ["+0700"] },
292             "NOVT" => { comment => "Novosibirsk Time", offset => ["+07:00"] },
293             "NPT" => { comment => "Nepal Time", offset => ["+05:45"] },
294             "NRT" => { comment => "Nauru Time", offset => ["+1200"] },
295             "NST" => { comment => "Newfoundland Standard Time", offset => ["-03:30"] },
296             "NSUT" => { comment => "North Sumatra Time", offset => ["+0630"] },
297             "NT" => { comment => "Newfoundland Time", offset => ["-03:30"] },
298             "NUT" => { comment => "Niue Time", offset => ["-11:00"] },
299             "NZDT" => { comment => "New Zealand Daylight Time", offset => ["+13:00"] },
300             "NZST" => { comment => "New Zealand Standard Time", offset => ["+12:00"] },
301             "NZT" => { comment => "New Zealand Standard Time", offset => ["+1200"] },
302             "O" => { comment => "Oscar Military Time Zone", offset => ["-0200"] },
303             "OESZ" => { comment => "Osteuropaeische Sommerzeit", offset => ["+0300"] },
304             "OEZ" => { comment => "Osteuropaische Zeit", offset => ["+0200"] },
305             "OMSST" => { comment => "Omsk Summer Time", offset => ["+0700"] },
306             "OMST" => { comment => "Omsk Time", offset => ["+06:00"] },
307             "ORAT" => { comment => "Oral Time", offset => ["+05:00"] },
308             "OZ" => { comment => "Ortszeit", offset => ["local"] },
309             "P" => { comment => "Papa Military Time Zone", offset => ["-0300"] },
310             "PDT" => {
311             comment => "Pacific Daylight Time (North America)",
312             offset => ["-07:00"],
313             },
314             "PET" => { comment => "Peru Time", offset => ["-05:00"] },
315             "PETST" => { comment => "Kamchatka Summer Time", offset => ["+1300"] },
316             "PETT" => { comment => "Kamchatka Time", offset => ["+12:00"] },
317             "PGT" => { comment => "Papua New Guinea Time", offset => ["+10:00"] },
318             "PHOT" => { comment => "Phoenix Island Time", offset => ["+13:00"] },
319             "PHST" => { comment => "Philippine Standard Time", offset => ["+08:00"] },
320             "PHT" => { comment => "Philippine Time", offset => ["+08:00"] },
321             "PKT" => { comment => "Pakistan Standard Time", offset => ["+05:00"] },
322             "PMDT" => {
323             comment => "Saint Pierre and Miquelon Daylight Time",
324             offset => ["-02:00"],
325             },
326             "PMST" => {
327             comment => "Saint Pierre and Miquelon Standard Time",
328             offset => ["-03:00"],
329             },
330             "PMT" => { comment => "Pierre & Miquelon Standard Time", offset => ["-0300"] },
331             "PNT" => { comment => "Pitcairn Time", offset => ["-0830"] },
332             "PONT" => { comment => "Pohnpei Standard Time", offset => ["+11:00"] },
333             "PST" => {
334             comment => "Pacific Standard Time (North America)",
335             offset => ["-08:00"],
336             },
337             "PWT" => { comment => "Palau Time", offset => ["+09:00"] },
338             "PYST" => { comment => "Paraguay Summer Time", offset => ["-03:00"] },
339             "PYT" => { comment => "Paraguay Time", offset => ["-04:00"] },
340             "Q" => { comment => "Quebec Military Time Zone", offset => ["-0400"] },
341             "R" => { comment => "Romeo Military Time Zone", offset => ["-0500"] },
342             "R1T" => { comment => "Russia Zone 1", offset => ["+0200"] },
343             "R2T" => { comment => "Russia Zone 2", offset => ["+0300"] },
344             "RET" => { comment => "R\xE9union Time", offset => ["+04:00"] },
345             "ROK" => { comment => "Korean Standard Time", offset => ["+0900"] },
346             "ROTT" => { comment => "Rothera Research Station Time", offset => ["-03:00"] },
347             "S" => { comment => "Sierra Military Time Zone", offset => ["-0600"] },
348             "SADT" => { comment => "Australian South Daylight Time", offset => ["+1030"] },
349             "SAKT" => { comment => "Sakhalin Island Time", offset => ["+11:00"] },
350             "SAMT" => { comment => "Samara Time", offset => ["+04:00"] },
351             "SAST" => { comment => "South African Standard Time", offset => ["+02:00"] },
352             "SBT" => { comment => "Solomon Islands Time", offset => ["+11:00"] },
353             "SCT" => { comment => "Seychelles Time", offset => ["+04:00"] },
354             "SDT" => { comment => "Samoa Daylight Time", offset => ["-10:00"] },
355             "SET" => { comment => "Prague, Vienna Time", offset => ["+0100"] },
356             "SGT" => { comment => "Singapore Time", offset => ["+08:00"] },
357             "SLST" => { comment => "Sri Lanka Standard Time", offset => ["+05:30"] },
358             "SRET" => { comment => "Srednekolymsk Time", offset => ["+11:00"] },
359             "SRT" => { comment => "Suriname Time", offset => ["-03:00"] },
360             "SST" => { comment => "Singapore Standard Time", offset => ["+08:00"] },
361             "SWT" => { comment => "Swedish Winter", offset => ["+0100"] },
362             "SYOT" => { comment => "Showa Station Time", offset => ["+03:00"] },
363             "T" => { comment => "Tango Military Time Zone", offset => ["-0700"] },
364             "TAHT" => { comment => "Tahiti Time", offset => ["-10:00"] },
365             "TFT" => {
366             comment => "French Southern and Antarctic Time",
367             offset => ["+05:00"],
368             },
369             "THA" => { comment => "Thailand Standard Time", offset => ["+07:00"] },
370             "THAT" => { comment => "Tahiti Time", offset => [-1000] },
371             "TJT" => { comment => "Tajikistan Time", offset => ["+05:00"] },
372             "TKT" => { comment => "Tokelau Time", offset => ["+13:00"] },
373             "TLT" => { comment => "Timor Leste Time", offset => ["+09:00"] },
374             "TMT" => { comment => "Turkmenistan Time", offset => ["+05:00"] },
375             "TOT" => { comment => "Tonga Time", offset => ["+13:00"] },
376             "TRT" => { comment => "Turkey Time", offset => ["+03:00"] },
377             "TRUT" => { comment => "Truk Time", offset => ["+1000"] },
378             "TST" => { comment => "Turkish Standard Time", offset => ["+0300"] },
379             "TUC " => { comment => "Temps Universel Coordonn\xE9", offset => ["+0000"] },
380             "TVT" => { comment => "Tuvalu Time", offset => ["+12:00"] },
381             "U" => { comment => "Uniform Military Time Zone", offset => ["-0800"] },
382             "ULAST" => { comment => "Ulaanbaatar Summer Time", offset => ["+09:00"] },
383             "ULAT" => { comment => "Ulaanbaatar Standard Time", offset => ["+08:00"] },
384             "USZ1" => { comment => "Russia Zone 1", offset => ["+0200"] },
385             "USZ1S" => { comment => "Kaliningrad Summer Time (Russia)", offset => ["+0300"] },
386             "USZ3" => { comment => "Volga Time (Russia)", offset => ["+0400"] },
387             "USZ3S" => { comment => "Volga Summer Time (Russia)", offset => ["+0500"] },
388             "USZ4" => { comment => "Ural Time (Russia)", offset => ["+0500"] },
389             "USZ4S" => { comment => "Ural Summer Time (Russia)", offset => ["+0600"] },
390             "USZ5" => { comment => "West-Siberian Time (Russia)", offset => ["+0600"] },
391             "USZ5S" => { comment => "West-Siberian Summer Time", offset => ["+0700"] },
392             "USZ6" => { comment => "Yenisei Time (Russia)", offset => ["+0700"] },
393             "USZ6S" => { comment => "Yenisei Summer Time (Russia)", offset => ["+0800"] },
394             "USZ7" => { comment => "Irkutsk Time (Russia)", offset => ["+0800"] },
395             "USZ7S" => { comment => "Irkutsk Summer Time", offset => ["+0900"] },
396             "USZ8" => { comment => "Amur Time (Russia)", offset => ["+0900"] },
397             "USZ8S" => { comment => "Amur Summer Time (Russia)", offset => ["+1000"] },
398             "USZ9" => { comment => "Vladivostok Time (Russia)", offset => ["+1000"] },
399             "USZ9S" => { comment => "Vladivostok Summer Time (Russia)", offset => ["+1100"] },
400             "UTC" => { comment => "Coordinated Universal Time", offset => ["UTC"] },
401             "UTZ" => { comment => "Greenland Western Standard Time", offset => ["-0300"] },
402             "UYST" => { comment => "Uruguay Summer Time", offset => ["-02:00"] },
403             "UYT" => { comment => "Uruguay Standard Time", offset => ["-03:00"] },
404             "UZ10" => { comment => "Okhotsk Time (Russia)", offset => ["+1100"] },
405             "UZ10S" => { comment => "Okhotsk Summer Time (Russia)", offset => ["+1200"] },
406             "UZ11" => { comment => "Kamchatka Time (Russia)", offset => ["+1200"] },
407             "UZ11S" => { comment => "Kamchatka Summer Time (Russia)", offset => ["+1300"] },
408             "UZ12" => { comment => "Chukot Time (Russia)", offset => ["+1200"] },
409             "UZ12S" => { comment => "Chukot Summer Time (Russia)", offset => ["+1300"] },
410             "UZT" => { comment => "Uzbekistan Time", offset => ["+05:00"] },
411             "V" => { comment => "Victor Military Time Zone", offset => ["-0900"] },
412             "VET" => { comment => "Venezuelan Standard Time", offset => ["-04:00"] },
413             "VLAST" => { comment => "Vladivostok Summer Time", offset => ["+1100"] },
414             "VLAT" => { comment => "Vladivostok Time", offset => ["+10:00"] },
415             "VOLT" => { comment => "Volgograd Time", offset => ["+03:00"] },
416             "VOST" => { comment => "Vostok Station Time", offset => ["+06:00"] },
417             "VTZ" => { comment => "Greenland Eastern Standard Time", offset => ["-0200"] },
418             "VUT" => { comment => "Vanuatu Time", offset => ["+11:00"] },
419             "W" => { comment => "Whiskey Military Time Zone", offset => [-1000] },
420             "WAKT" => { comment => "Wake Island Time", offset => ["+12:00"] },
421             "WAST" => { comment => "West Africa Summer Time", offset => ["+02:00"] },
422             "WAT" => { comment => "West Africa Time", offset => ["+01:00"] },
423             "WEST" => { comment => "Western European Summer Time", offset => ["+01:00"] },
424             "WESZ" => { comment => "Westeuropaische Sommerzeit", offset => ["+0100"] },
425             "WET" => { comment => "Western European Time", offset => ["UTC"] },
426             "WETDST" => { comment => "European Western Summer", offset => ["+0100"] },
427             "WEZ" => { comment => "Western Europe Time", offset => ["+0000"] },
428             "WFT" => { comment => "Wallis and Futuna Time", offset => ["+1200"] },
429             "WGST" => { comment => "West Greenland Summer Time", offset => ["-02:00"] },
430             "WGT" => { comment => "West Greenland Time", offset => ["-03:00"] },
431             "WIB" => { comment => "Western Indonesian Time", offset => ["+07:00"] },
432             "WIT" => { comment => "Eastern Indonesian Time", offset => ["+09:00"] },
433             "WITA" => { comment => "Central Indonesia Time", offset => ["+08:00"] },
434             "WST" => { comment => "Western Standard Time", offset => ["+08:00"] },
435             "WTZ" => { comment => "Greenland Eastern Daylight Time", offset => ["-0100"] },
436             "WUT" => { comment => "Austria Time", offset => ["+0100"] },
437             "X" => { comment => "X-ray Military Time Zone", offset => [-1100] },
438             "Y" => { comment => "Yankee Military Time Zone", offset => [-1200] },
439             "YAKST" => { comment => "Yakutsk Summer Time", offset => ["+1000"] },
440             "YAKT" => { comment => "Yakutsk Time", offset => ["+09:00"] },
441             "YAPT" => { comment => "Yap Time (Micronesia)", offset => ["+1000"] },
442             "YDT" => { comment => "Yukon Daylight Time", offset => ["-0800"] },
443             "YEKST" => { comment => "Yekaterinburg Summer Time", offset => ["+0600"] },
444             "YEKT" => { comment => "Yekaterinburg Time", offset => ["+05:00"] },
445             "YST" => { comment => "Yukon Standard Time", offset => ["-0900"] },
446             "Z" => { comment => "Zulu", offset => ["+0000"] },
447             };
448              
449             sub import
450             {
451 1     1   17 my $class = shift( @_ );
452 1         34 foreach my $alias ( keys( %$ALIAS_CATALOG ) )
453             {
454 352 100       2643 next if( DateTime::TimeZone::Alias->is_defined( $alias ) );
455 342 50 33     64038 try
  342         447  
  342         379  
  342         728  
  0         0  
  342         405  
  342         595  
  342         445  
456 342     342   360 {
457 342         2270 DateTime::TimeZone::Alias->add( $alias => $ALIAS_CATALOG->{ $alias }->{offset}->[0] );
458             }
459 342 50 50 0   1194 catch( $e )
  342 0 33     142125  
  0 0 0     0  
  342 0 33     468  
  342 0 33     697  
  0 0       0  
  0 0       0  
  0 0       0  
  342 0       684  
  0 0       0  
  0 0       0  
  342 0       511  
  342 0       416  
  342 0       516  
  342 0       703  
  0 50       0  
  0 50       0  
  0 50       0  
  0 50       0  
  0 50       0  
  0 50       0  
  0 0       0  
  0 50       0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  342         643  
  0         0  
  0         0  
  342         586  
  342         677  
  342         638  
  342         823  
  342         575  
  342         599  
  0         0  
  0         0  
  0         0  
  0         0  
460 0     0   0 {
461 0 0       0 warnings::warn( "Warning only: error trying to add time zone alias '$alias' (" . $ALIAS_CATALOG->{ $alias }->{comment} . ") with time zone offset '" . $ALIAS_CATALOG->{ $alias }->{offset}->[0] . "': $e\n" ) if( warnings::enabled() );
462 1 0 0 1   3606 }
  1 0 0     1  
  1 0 0     385  
  0 0 33     0  
  0 0 0     0  
  0 0 0     0  
  0 0 0     0  
  0 0 0     0  
  0 0       0  
  0 0       0  
  0 0       0  
  0 0       0  
  0 0       0  
  0 0       0  
  0 0       0  
  0 0       0  
  0 0       0  
  0 0       0  
  0 0       0  
  0 0       0  
  0 0       0  
  0 0       0  
  0 0       0  
  0 0       0  
  0 0       0  
  0 0       0  
  0 0       0  
  342 0       1610  
  0 0       0  
  0 0       0  
  0 0       0  
  0 0       0  
  0 0       0  
  0 0       0  
  0 0       0  
  0 0       0  
  0 50       0  
  0 50       0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  342         585  
  0         0  
  0         0  
  0         0  
  0         0  
  342         977  
463             }
464             }
465              
466 1     1 1 657163 sub aliases { return( [sort(keys( %$ALIAS_CATALOG ) )] ); }
467              
468             sub zone_map
469             {
470 0 0   0 1   if( defined( $ZONE_MAP ) )
471             {
472 0           return( $ZONE_MAP );
473             }
474 0           $ZONE_MAP = +{ map{ $_ => $ALIAS_CATALOG->{ $_ }->{offset}->[0] } keys( %$ALIAS_CATALOG ) };
  0            
475 0           return( $ZONE_MAP );
476             }
477              
478             1;
479             # NOTE: POD
480             __END__
481              
482             =encoding utf-8
483              
484             =head1 NAME
485              
486             DateTime::TimeZone::Catalog::Extend - Extend DateTime::TimeZone catalog
487              
488             =head1 SYNOPSIS
489              
490             use DateTime::TimeZone;
491             # After DateTime::TimeZone is loaded, let's extend it
492             use DateTime::TimeZone::Catalog::Extend;
493             # That's it; nothing more
494              
495             # This would normally trigger an exception, but not anymore
496             my $tz = DateTime::TimeZone->new( name => 'JST' );
497              
498             # Get the list of all aliases
499             my $aliases = DateTime::TimeZone::Catalog::Extend->aliases;
500              
501             my $map = DateTime::TimeZone::Catalog::Extend->zone_map;
502             my $fmt = DateTime::Format::Strptime->new(
503             pattern => $pattern,
504             zone_map => $map,
505             );
506             my $dt = $fmt->parse_datetime( $str );
507             die( $fmt->errmsg ) if( !defined( $dt ) );
508              
509             =head1 VERSION
510              
511             v0.3.0
512              
513             =head1 DESCRIPTION
514              
515             This is a very simple module based on the L<list of time zone aliases|https://en.wikipedia.org/wiki/List_of_time_zone_abbreviations> that are sometimes found in dates.
516              
517             Upon using this module, it will add to the L<DateTime::TimeZone::Catalog> those aliases with their corresponding time zone offset. When there is more than one time zone offset in the list, only the first one is set.
518              
519             Here is the list of those time zone aliases and their offset:
520              
521             =over 4
522              
523             =item 1. C<A> +0100 (Alpha Military Time Zone)
524              
525             =item 2. C<ACDT> +10:30 (Australian Central Daylight Saving Time)
526              
527             =item 3. C<ACST> +09:30 (Australian Central Standard Time)
528              
529             =item 4. C<ACT> +08:00 (ASEAN Common Time)
530              
531             =item 5. C<ACWST> +08:45 (Australian Central Western Standard Time)
532              
533             =item 6. C<ADT> -03:00 (Atlantic Daylight Time)
534              
535             =item 7. C<AEDT> +11:00 (Australian Eastern Daylight Saving Time)
536              
537             =item 8. C<AES> +10:00 (Australian Eastern Standard Time)
538              
539             =item 9. C<AEST> +10:00 (Australian Eastern Standard Time)
540              
541             =item 10. C<AET> +10:00 (Australian Eastern Time)
542              
543             =item 11. C<AFT> +04:30 (Afghanistan Time)
544              
545             =item 12. C<AHDT> -0900 (Alaska-Hawaii Daylight Time)
546              
547             =item 13. C<AHST> -1000 (Alaska-Hawaii Standard Time)
548              
549             =item 14. C<AKDT> -08:00 (Alaska Daylight Time)
550              
551             =item 15. C<AKST> -09:00 (Alaska Standard Time)
552              
553             =item 16. C<ALMT> +06:00 (Alma-Ata Time)
554              
555             =item 17. C<AMST> -03:00 (Amazon Summer Time (Brazil))
556              
557             =item 18. C<AMT> +04:00 (Armenia Time)
558              
559             =item 19. C<ANAST> +1300 (Anadyr Summer Time)
560              
561             =item 20. C<ANAT> +12:00 (Anadyr Time)
562              
563             =item 21. C<AQTT> +05:00 (Aqtobe Time)
564              
565             =item 22. C<ART> -03:00 (Argentina Time)
566              
567             =item 23. C<AST> -04:00 (Atlantic Standard Time)
568              
569             =item 24. C<AT> -0100 (Azores Time)
570              
571             =item 25. C<AWST> +08:00 (Australian Western Standard Time)
572              
573             =item 26. C<AZOST> UTC (Azores Summer Time)
574              
575             =item 27. C<AZOT> -01:00 (Azores Standard Time)
576              
577             =item 28. C<AZST> +0500 (Azerbaijan Summer Time)
578              
579             =item 29. C<AZT> +04:00 (Azerbaijan Time)
580              
581             =item 30. C<B> +0200 (Bravo Military Time Zone)
582              
583             =item 31. C<BADT> +0400 (Baghdad Daylight Time)
584              
585             =item 32. C<BAT> +0600 (Baghdad Time)
586              
587             =item 33. C<BDST> +0200 (British Double Summer Time)
588              
589             =item 34. C<BDT> +0600 (Bangladesh Time)
590              
591             =item 35. C<BET> -1100 (Bering Standard Time)
592              
593             =item 36. C<BIOT> +06:00 (British Indian Ocean Time)
594              
595             =item 37. C<BIT> -12:00 (Baker Island Time)
596              
597             =item 38. C<BNT> +08:00 (Brunei Time)
598              
599             =item 39. C<BORT> +0800 (Borneo Time (Indonesia))
600              
601             =item 40. C<BOT> -04:00 (Bolivia Time)
602              
603             =item 41. C<BRA> -0300 (Brazil Time)
604              
605             =item 42. C<BRST> -02:00 (Brasília Summer Time)
606              
607             =item 43. C<BRT> -03:00 (Brasília Time)
608              
609             =item 44. C<BST> +01:00 (British Summer Time (British Standard Time from Feb 1968 to Oct 1971))
610              
611             =item 45. C<BTT> +06:00 (Bhutan Time)
612              
613             =item 46. C<C> +0300 (Charlie Military Time Zone)
614              
615             =item 47. C<CAST> +0930 (Casey Time Zone)
616              
617             =item 48. C<CAT> +02:00 (Central Africa Time)
618              
619             =item 49. C<CCT> +06:30 (Cocos Islands Time)
620              
621             =item 50. C<CDT> -04:00 (Cuba Daylight Time)
622              
623             =item 51. C<CEST> +02:00 (Central European Summer Time)
624              
625             =item 52. C<CET> +01:00 (Central European Time)
626              
627             =item 53. C<CETDST> +0200 (Central Europe Summer Time)
628              
629             =item 54. C<CHADT> +13:45 (Chatham Daylight Time)
630              
631             =item 55. C<CHAST> +12:45 (Chatham Standard Time)
632              
633             =item 56. C<CHOST> +09:00 (Choibalsan Summer Time)
634              
635             =item 57. C<CHOT> +08:00 (Choibalsan Standard Time)
636              
637             =item 58. C<CHST> +10:00 (Chamorro Standard Time)
638              
639             =item 59. C<CHUT> +10:00 (Chuuk Time)
640              
641             =item 60. C<CIST> -08:00 (Clipperton Island Standard Time)
642              
643             =item 61. C<CKT> -10:00 (Cook Island Time)
644              
645             =item 62. C<CLST> -03:00 (Chile Summer Time)
646              
647             =item 63. C<CLT> -04:00 (Chile Standard Time)
648              
649             =item 64. C<COST> -04:00 (Colombia Summer Time)
650              
651             =item 65. C<COT> -05:00 (Colombia Time)
652              
653             =item 66. C<CST> -05:00 (Cuba Standard Time)
654              
655             =item 67. C<CSuT> +1030 (Australian Central Daylight)
656              
657             =item 68. C<CT> -06:00 (Central Time)
658              
659             =item 69. C<CUT> +0000 (Coordinated Universal Time)
660              
661             =item 70. C<CVT> -01:00 (Cape Verde Time)
662              
663             =item 71. C<CWST> +08:45 (Central Western Standard Time (Australia))
664              
665             =item 72. C<CXT> +07:00 (Christmas Island Time)
666              
667             =item 73. C<ChST> +1000 (Chamorro Standard Time)
668              
669             =item 74. C<D> +0400 (Delta Military Time Zone)
670              
671             =item 75. C<DAVT> +07:00 (Davis Time)
672              
673             =item 76. C<DDUT> +10:00 (Dumont d'Urville Time)
674              
675             =item 77. C<DFT> +01:00 (AIX-specific equivalent of Central European Time)
676              
677             =item 78. C<DNT> +0100 (Dansk Normal)
678              
679             =item 79. C<DST> +0200 (Dansk Summer)
680              
681             =item 80. C<E> +0500 (Echo Military Time Zone)
682              
683             =item 81. C<EASST> -05:00 (Easter Island Summer Time)
684              
685             =item 82. C<EAST> -06:00 (Easter Island Standard Time)
686              
687             =item 83. C<EAT> +03:00 (East Africa Time)
688              
689             =item 84. C<ECT> -05:00 (Ecuador Time)
690              
691             =item 85. C<EDT> -04:00 (Eastern Daylight Time (North America))
692              
693             =item 86. C<EEST> +03:00 (Eastern European Summer Time)
694              
695             =item 87. C<EET> +02:00 (Eastern European Time)
696              
697             =item 88. C<EETDST> +0300 (European Eastern Summer)
698              
699             =item 89. C<EGST> UTC (Eastern Greenland Summer Time)
700              
701             =item 90. C<EGT> -01:00 (Eastern Greenland Time)
702              
703             =item 91. C<EMT> +0100 (Norway Time)
704              
705             =item 92. C<EST> -05:00 (Eastern Standard Time (North America))
706              
707             =item 93. C<ESuT> +1100 (Australian Eastern Daylight)
708              
709             =item 94. C<ET> -04:00 (Eastern Time (North America))
710              
711             =item 95. C<F> +0600 (Foxtrot Military Time Zone)
712              
713             =item 96. C<FET> +03:00 (Further-eastern European Time)
714              
715             =item 97. C<FJST> +1300 (Fiji Summer Time)
716              
717             =item 98. C<FJT> +12:00 (Fiji Time)
718              
719             =item 99. C<FKST> -03:00 (Falkland Islands Summer Time)
720              
721             =item 100. C<FKT> -04:00 (Falkland Islands Time)
722              
723             =item 101. C<FNT> -02:00 (Fernando de Noronha Time)
724              
725             =item 102. C<FWT> +0100 (French Winter Time)
726              
727             =item 103. C<G> +0700 (Golf Military Time Zone)
728              
729             =item 104. C<GALT> -06:00 (Galapagos Time)
730              
731             =item 105. C<GAMT> -09:00 (Gambier Islands Time)
732              
733             =item 106. C<GEST> +0500 (Georgia Summer Time)
734              
735             =item 107. C<GET> +04:00 (Georgia Standard Time)
736              
737             =item 108. C<GFT> -03:00 (French Guiana Time)
738              
739             =item 109. C<GILT> +12:00 (Gilbert Island Time)
740              
741             =item 110. C<GIT> -09:00 (Gambier Island Time)
742              
743             =item 111. C<GMT> UTC (Greenwich Mean Time)
744              
745             =item 112. C<GST> +04:00 (Gulf Standard Time)
746              
747             =item 113. C<GT> +0000 (Greenwich Time)
748              
749             =item 114. C<GYT> -04:00 (Guyana Time)
750              
751             =item 115. C<GZ> +0000 (Greenwichzeit)
752              
753             =item 116. C<H> +0800 (Hotel Military Time Zone)
754              
755             =item 117. C<HAA> -0300 (Heure Avancée de l'Atlantique)
756              
757             =item 118. C<HAC> -0500 (Heure Avancee du Centre)
758              
759             =item 119. C<HAE> -0400 (Heure Avancee de l'Est)
760              
761             =item 120. C<HAEC> +02:00 (Heure Avancée d'Europe Centrale)
762              
763             =item 121. C<HAP> -0700 (Heure Avancee du Pacifique)
764              
765             =item 122. C<HAR> -0600 (Heure Avancee des Rocheuses)
766              
767             =item 123. C<HAT> -0230 (Heure Avancee de Terre-Neuve)
768              
769             =item 124. C<HAY> -0800 (Heure Avancee du Yukon)
770              
771             =item 125. C<HDT> -09:00 (Hawaii–Aleutian Daylight Time)
772              
773             =item 126. C<HFE> +0200 (Heure Fancais d'Ete)
774              
775             =item 127. C<HFH> +0100 (Heure Fancais d'Hiver)
776              
777             =item 128. C<HG> +0000 (Heure de Greenwich)
778              
779             =item 129. C<HKT> +08:00 (Hong Kong Time)
780              
781             =item 130. C<HL> local (Heure locale)
782              
783             =item 131. C<HMT> +05:00 (Heard and McDonald Islands Time)
784              
785             =item 132. C<HNA> -0400 (Heure Normale de l'Atlantique)
786              
787             =item 133. C<HNC> -0600 (Heure Normale du Centre)
788              
789             =item 134. C<HNE> -0500 (Heure Normale de l'Est)
790              
791             =item 135. C<HNP> -0800 (Heure Normale du Pacifique)
792              
793             =item 136. C<HNR> -0700 (Heure Normale des Rocheuses)
794              
795             =item 137. C<HNT> -0330 (Heure Normale de Terre-Neuve)
796              
797             =item 138. C<HNY> -0900 (Heure Normale du Yukon)
798              
799             =item 139. C<HOE> +0100 (Spain Time)
800              
801             =item 140. C<HOVST> +08:00 (Hovd Summer Time (not used from 2017-present))
802              
803             =item 141. C<HOVT> +07:00 (Hovd Time)
804              
805             =item 142. C<HST> -10:00 (Hawaii–Aleutian Standard Time)
806              
807             =item 143. C<I> +0900 (India Military Time Zone)
808              
809             =item 144. C<ICT> +07:00 (Indochina Time)
810              
811             =item 145. C<IDLE> +1200 (Internation Date Line East)
812              
813             =item 146. C<IDLW> -12:00 (International Day Line West time zone)
814              
815             =item 147. C<IDT> +03:00 (Israel Daylight Time)
816              
817             =item 148. C<IOT> +03:00 (Indian Ocean Time)
818              
819             =item 149. C<IRDT> +04:30 (Iran Daylight Time)
820              
821             =item 150. C<IRKST> +0900 (Irkutsk Summer Time)
822              
823             =item 151. C<IRKT> +08:00 (Irkutsk Time)
824              
825             =item 152. C<IRST> +03:30 (Iran Standard Time)
826              
827             =item 153. C<IRT> +0330 (Iran Time)
828              
829             =item 154. C<IST> +02:00 (Israel Standard Time)
830              
831             =item 155. C<IT> +0330 (Iran Time)
832              
833             =item 156. C<ITA> +0100 (Italy Time)
834              
835             =item 157. C<JAVT> +0700 (Java Time)
836              
837             =item 158. C<JAYT> +0900 (Jayapura Time (Indonesia))
838              
839             =item 159. C<JST> +09:00 (Japan Standard Time)
840              
841             =item 160. C<JT> +0700 (Java Time)
842              
843             =item 161. C<K> +1000 (Kilo Military Time Zone)
844              
845             =item 162. C<KALT> +02:00 (Kaliningrad Time)
846              
847             =item 163. C<KDT> +1000 (Korean Daylight Time)
848              
849             =item 164. C<KGST> +0600 (Kyrgyzstan Summer Time)
850              
851             =item 165. C<KGT> +06:00 (Kyrgyzstan Time)
852              
853             =item 166. C<KOST> +11:00 (Kosrae Time)
854              
855             =item 167. C<KRAST> +0800 (Krasnoyarsk Summer Time)
856              
857             =item 168. C<KRAT> +07:00 (Krasnoyarsk Time)
858              
859             =item 169. C<KST> +09:00 (Korea Standard Time)
860              
861             =item 170. C<L> +1100 (Lima Military Time Zone)
862              
863             =item 171. C<LHDT> +1100 (Lord Howe Daylight Time)
864              
865             =item 172. C<LHST> +11:00 (Lord Howe Summer Time)
866              
867             =item 173. C<LIGT> +1000 (Melbourne, Australia)
868              
869             =item 174. C<LINT> +14:00 (Line Islands Time)
870              
871             =item 175. C<LKT> +0600 (Lanka Time)
872              
873             =item 176. C<LST> local (Local Sidereal Time)
874              
875             =item 177. C<LT> local (Local Time)
876              
877             =item 178. C<M> +1200 (Mike Military Time Zone)
878              
879             =item 179. C<MAGST> +1200 (Magadan Summer Time)
880              
881             =item 180. C<MAGT> +12:00 (Magadan Time)
882              
883             =item 181. C<MAL> +0800 (Malaysia Time)
884              
885             =item 182. C<MART> -09:30 (Marquesas Islands Time)
886              
887             =item 183. C<MAT> +0300 (Turkish Standard Time)
888              
889             =item 184. C<MAWT> +05:00 (Mawson Station Time)
890              
891             =item 185. C<MDT> -06:00 (Mountain Daylight Time (North America))
892              
893             =item 186. C<MED> +0200 (Middle European Daylight)
894              
895             =item 187. C<MEDST> +0200 (Middle European Summer)
896              
897             =item 188. C<MEST> +02:00 (Middle European Summer Time)
898              
899             =item 189. C<MESZ> +0200 (Mitteieuropaische Sommerzeit)
900              
901             =item 190. C<MET> +01:00 (Middle European Time)
902              
903             =item 191. C<MEWT> +0100 (Middle European Winter Time)
904              
905             =item 192. C<MEX> -0600 (Mexico Time)
906              
907             =item 193. C<MEZ> +0100 (Mitteieuropaische Zeit)
908              
909             =item 194. C<MHT> +12:00 (Marshall Islands Time)
910              
911             =item 195. C<MIST> +11:00 (Macquarie Island Station Time)
912              
913             =item 196. C<MIT> -09:30 (Marquesas Islands Time)
914              
915             =item 197. C<MMT> +06:30 (Myanmar Standard Time)
916              
917             =item 198. C<MPT> +1000 (North Mariana Islands Time)
918              
919             =item 199. C<MSD> +0400 (Moscow Summer Time)
920              
921             =item 200. C<MSK> +03:00 (Moscow Time)
922              
923             =item 201. C<MSKS> +0400 (Moscow Summer Time)
924              
925             =item 202. C<MST> -07:00 (Mountain Standard Time)
926              
927             =item 203. C<MT> +0830 (Moluccas)
928              
929             =item 204. C<MUT> +04:00 (Mauritius Time)
930              
931             =item 205. C<MVT> +05:00 (Maldives Time)
932              
933             =item 206. C<MYT> +08:00 (Malaysia Time)
934              
935             =item 207. C<N> -0100 (November Military Time Zone)
936              
937             =item 208. C<NCT> +11:00 (New Caledonia Time)
938              
939             =item 209. C<NDT> -02:30 (Newfoundland Daylight Time)
940              
941             =item 210. C<NFT> +11:00 (Norfolk Island Time)
942              
943             =item 211. C<NOR> +0100 (Norway Time)
944              
945             =item 212. C<NOVST> +0700 (Novosibirsk Summer Time (Russia))
946              
947             =item 213. C<NOVT> +07:00 (Novosibirsk Time)
948              
949             =item 214. C<NPT> +05:45 (Nepal Time)
950              
951             =item 215. C<NRT> +1200 (Nauru Time)
952              
953             =item 216. C<NST> -03:30 (Newfoundland Standard Time)
954              
955             =item 217. C<NSUT> +0630 (North Sumatra Time)
956              
957             =item 218. C<NT> -03:30 (Newfoundland Time)
958              
959             =item 219. C<NUT> -11:00 (Niue Time)
960              
961             =item 220. C<NZDT> +13:00 (New Zealand Daylight Time)
962              
963             =item 221. C<NZST> +12:00 (New Zealand Standard Time)
964              
965             =item 222. C<NZT> +1200 (New Zealand Standard Time)
966              
967             =item 223. C<O> -0200 (Oscar Military Time Zone)
968              
969             =item 224. C<OESZ> +0300 (Osteuropaeische Sommerzeit)
970              
971             =item 225. C<OEZ> +0200 (Osteuropaische Zeit)
972              
973             =item 226. C<OMSST> +0700 (Omsk Summer Time)
974              
975             =item 227. C<OMST> +06:00 (Omsk Time)
976              
977             =item 228. C<ORAT> +05:00 (Oral Time)
978              
979             =item 229. C<OZ> local (Ortszeit)
980              
981             =item 230. C<P> -0300 (Papa Military Time Zone)
982              
983             =item 231. C<PDT> -07:00 (Pacific Daylight Time (North America))
984              
985             =item 232. C<PET> -05:00 (Peru Time)
986              
987             =item 233. C<PETST> +1300 (Kamchatka Summer Time)
988              
989             =item 234. C<PETT> +12:00 (Kamchatka Time)
990              
991             =item 235. C<PGT> +10:00 (Papua New Guinea Time)
992              
993             =item 236. C<PHOT> +13:00 (Phoenix Island Time)
994              
995             =item 237. C<PHST> +08:00 (Philippine Standard Time)
996              
997             =item 238. C<PHT> +08:00 (Philippine Time)
998              
999             =item 239. C<PKT> +05:00 (Pakistan Standard Time)
1000              
1001             =item 240. C<PMDT> -02:00 (Saint Pierre and Miquelon Daylight Time)
1002              
1003             =item 241. C<PMST> -03:00 (Saint Pierre and Miquelon Standard Time)
1004              
1005             =item 242. C<PMT> -0300 (Pierre & Miquelon Standard Time)
1006              
1007             =item 243. C<PNT> -0830 (Pitcairn Time)
1008              
1009             =item 244. C<PONT> +11:00 (Pohnpei Standard Time)
1010              
1011             =item 245. C<PST> -08:00 (Pacific Standard Time (North America))
1012              
1013             =item 246. C<PWT> +09:00 (Palau Time)
1014              
1015             =item 247. C<PYST> -03:00 (Paraguay Summer Time)
1016              
1017             =item 248. C<PYT> -04:00 (Paraguay Time)
1018              
1019             =item 249. C<Q> -0400 (Quebec Military Time Zone)
1020              
1021             =item 250. C<R> -0500 (Romeo Military Time Zone)
1022              
1023             =item 251. C<R1T> +0200 (Russia Zone 1)
1024              
1025             =item 252. C<R2T> +0300 (Russia Zone 2)
1026              
1027             =item 253. C<RET> +04:00 (Réunion Time)
1028              
1029             =item 254. C<ROK> +0900 (Korean Standard Time)
1030              
1031             =item 255. C<ROTT> -03:00 (Rothera Research Station Time)
1032              
1033             =item 256. C<S> -0600 (Sierra Military Time Zone)
1034              
1035             =item 257. C<SADT> +1030 (Australian South Daylight Time)
1036              
1037             =item 258. C<SAKT> +11:00 (Sakhalin Island Time)
1038              
1039             =item 259. C<SAMT> +04:00 (Samara Time)
1040              
1041             =item 260. C<SAST> +02:00 (South African Standard Time)
1042              
1043             =item 261. C<SBT> +11:00 (Solomon Islands Time)
1044              
1045             =item 262. C<SCT> +04:00 (Seychelles Time)
1046              
1047             =item 263. C<SDT> -10:00 (Samoa Daylight Time)
1048              
1049             =item 264. C<SET> +0100 (Prague, Vienna Time)
1050              
1051             =item 265. C<SGT> +08:00 (Singapore Time)
1052              
1053             =item 266. C<SLST> +05:30 (Sri Lanka Standard Time)
1054              
1055             =item 267. C<SRET> +11:00 (Srednekolymsk Time)
1056              
1057             =item 268. C<SRT> -03:00 (Suriname Time)
1058              
1059             =item 269. C<SST> +08:00 (Singapore Standard Time)
1060              
1061             =item 270. C<SWT> +0100 (Swedish Winter)
1062              
1063             =item 271. C<SYOT> +03:00 (Showa Station Time)
1064              
1065             =item 272. C<T> -0700 (Tango Military Time Zone)
1066              
1067             =item 273. C<TAHT> -10:00 (Tahiti Time)
1068              
1069             =item 274. C<TFT> +05:00 (French Southern and Antarctic Time)
1070              
1071             =item 275. C<THA> +07:00 (Thailand Standard Time)
1072              
1073             =item 276. C<THAT> -1000 (Tahiti Time)
1074              
1075             =item 277. C<TJT> +05:00 (Tajikistan Time)
1076              
1077             =item 278. C<TKT> +13:00 (Tokelau Time)
1078              
1079             =item 279. C<TLT> +09:00 (Timor Leste Time)
1080              
1081             =item 280. C<TMT> +05:00 (Turkmenistan Time)
1082              
1083             =item 281. C<TOT> +13:00 (Tonga Time)
1084              
1085             =item 282. C<TRT> +03:00 (Turkey Time)
1086              
1087             =item 283. C<TRUT> +1000 (Truk Time)
1088              
1089             =item 284. C<TST> +0300 (Turkish Standard Time)
1090              
1091             =item 285. C<TUC > +0000 (Temps Universel Coordonné)
1092              
1093             =item 286. C<TVT> +12:00 (Tuvalu Time)
1094              
1095             =item 287. C<U> -0800 (Uniform Military Time Zone)
1096              
1097             =item 288. C<ULAST> +09:00 (Ulaanbaatar Summer Time)
1098              
1099             =item 289. C<ULAT> +08:00 (Ulaanbaatar Standard Time)
1100              
1101             =item 290. C<USZ1> +0200 (Russia Zone 1)
1102              
1103             =item 291. C<USZ1S> +0300 (Kaliningrad Summer Time (Russia))
1104              
1105             =item 292. C<USZ3> +0400 (Volga Time (Russia))
1106              
1107             =item 293. C<USZ3S> +0500 (Volga Summer Time (Russia))
1108              
1109             =item 294. C<USZ4> +0500 (Ural Time (Russia))
1110              
1111             =item 295. C<USZ4S> +0600 (Ural Summer Time (Russia))
1112              
1113             =item 296. C<USZ5> +0600 (West-Siberian Time (Russia))
1114              
1115             =item 297. C<USZ5S> +0700 (West-Siberian Summer Time)
1116              
1117             =item 298. C<USZ6> +0700 (Yenisei Time (Russia))
1118              
1119             =item 299. C<USZ6S> +0800 (Yenisei Summer Time (Russia))
1120              
1121             =item 300. C<USZ7> +0800 (Irkutsk Time (Russia))
1122              
1123             =item 301. C<USZ7S> +0900 (Irkutsk Summer Time)
1124              
1125             =item 302. C<USZ8> +0900 (Amur Time (Russia))
1126              
1127             =item 303. C<USZ8S> +1000 (Amur Summer Time (Russia))
1128              
1129             =item 304. C<USZ9> +1000 (Vladivostok Time (Russia))
1130              
1131             =item 305. C<USZ9S> +1100 (Vladivostok Summer Time (Russia))
1132              
1133             =item 306. C<UTC> UTC (Coordinated Universal Time)
1134              
1135             =item 307. C<UTZ> -0300 (Greenland Western Standard Time)
1136              
1137             =item 308. C<UYST> -02:00 (Uruguay Summer Time)
1138              
1139             =item 309. C<UYT> -03:00 (Uruguay Standard Time)
1140              
1141             =item 310. C<UZ10> +1100 (Okhotsk Time (Russia))
1142              
1143             =item 311. C<UZ10S> +1200 (Okhotsk Summer Time (Russia))
1144              
1145             =item 312. C<UZ11> +1200 (Kamchatka Time (Russia))
1146              
1147             =item 313. C<UZ11S> +1300 (Kamchatka Summer Time (Russia))
1148              
1149             =item 314. C<UZ12> +1200 (Chukot Time (Russia))
1150              
1151             =item 315. C<UZ12S> +1300 (Chukot Summer Time (Russia))
1152              
1153             =item 316. C<UZT> +05:00 (Uzbekistan Time)
1154              
1155             =item 317. C<V> -0900 (Victor Military Time Zone)
1156              
1157             =item 318. C<VET> -04:00 (Venezuelan Standard Time)
1158              
1159             =item 319. C<VLAST> +1100 (Vladivostok Summer Time)
1160              
1161             =item 320. C<VLAT> +10:00 (Vladivostok Time)
1162              
1163             =item 321. C<VOLT> +03:00 (Volgograd Time)
1164              
1165             =item 322. C<VOST> +06:00 (Vostok Station Time)
1166              
1167             =item 323. C<VTZ> -0200 (Greenland Eastern Standard Time)
1168              
1169             =item 324. C<VUT> +11:00 (Vanuatu Time)
1170              
1171             =item 325. C<W> -1000 (Whiskey Military Time Zone)
1172              
1173             =item 326. C<WAKT> +12:00 (Wake Island Time)
1174              
1175             =item 327. C<WAST> +02:00 (West Africa Summer Time)
1176              
1177             =item 328. C<WAT> +01:00 (West Africa Time)
1178              
1179             =item 329. C<WEST> +01:00 (Western European Summer Time)
1180              
1181             =item 330. C<WESZ> +0100 (Westeuropaische Sommerzeit)
1182              
1183             =item 331. C<WET> UTC (Western European Time)
1184              
1185             =item 332. C<WETDST> +0100 (European Western Summer)
1186              
1187             =item 333. C<WEZ> +0000 (Western Europe Time)
1188              
1189             =item 334. C<WFT> +1200 (Wallis and Futuna Time)
1190              
1191             =item 335. C<WGST> -02:00 (West Greenland Summer Time)
1192              
1193             =item 336. C<WGT> -03:00 (West Greenland Time)
1194              
1195             =item 337. C<WIB> +07:00 (Western Indonesian Time)
1196              
1197             =item 338. C<WIT> +09:00 (Eastern Indonesian Time)
1198              
1199             =item 339. C<WITA> +08:00 (Central Indonesia Time)
1200              
1201             =item 340. C<WST> +08:00 (Western Standard Time)
1202              
1203             =item 341. C<WTZ> -0100 (Greenland Eastern Daylight Time)
1204              
1205             =item 342. C<WUT> +0100 (Austria Time)
1206              
1207             =item 343. C<X> -1100 (X-ray Military Time Zone)
1208              
1209             =item 344. C<Y> -1200 (Yankee Military Time Zone)
1210              
1211             =item 345. C<YAKST> +1000 (Yakutsk Summer Time)
1212              
1213             =item 346. C<YAKT> +09:00 (Yakutsk Time)
1214              
1215             =item 347. C<YAPT> +1000 (Yap Time (Micronesia))
1216              
1217             =item 348. C<YDT> -0800 (Yukon Daylight Time)
1218              
1219             =item 349. C<YEKST> +0600 (Yekaterinburg Summer Time)
1220              
1221             =item 350. C<YEKT> +05:00 (Yekaterinburg Time)
1222              
1223             =item 351. C<YST> -0900 (Yukon Standard Time)
1224              
1225             =item 352. C<Z> +0000 (Zulu)
1226              
1227             =back
1228              
1229             =head1 METHODS
1230              
1231             =head2 aliases
1232              
1233             Returns an array reference of the time zone aliases.
1234              
1235             my $aliases = DateTime::TimeZone::Catalog::Extend->aliases;
1236              
1237             You can also achieve the same result by accessing directly the package variable C<$ALIAS_CATALOG>
1238              
1239             my $aliases = [sort( keys( %$DateTime::TimeZone::Catalog::Extend::ALIAS_CATALOG ) )];
1240              
1241             =head2 zone_map
1242              
1243             Returns an hash reference of time zone alias to their offset. This class function caches the hash reference so the second time it returns the cached value.
1244              
1245             The returned hash reference is suitable to be passed to L<DateTime::Format::Strptime/new> with the argument C<zone_map>
1246              
1247             my $str = 'Fri Mar 25 2011 12:16:25 ADT';
1248             my $map = DateTime::TimeZone::Catalog::Extend->zone_map;
1249             my $fmt = DateTime::Format::Strptime->new(
1250             pattern => $pattern,
1251             zone_map => $map,
1252             );
1253             my $dt = $fmt->parse_datetime( $str );
1254             die( $fmt->errmsg ) if( !defined( $dt ) );
1255              
1256             Without passing the C<zone_map>, L<DateTime::Format::Strptime> would have returned the error c<The time zone abbreviation that was parsed is ambiguous>
1257              
1258             =head1 AUTHOR
1259              
1260             Jacques Deguest E<lt>F<jack@deguest.jp>E<gt>
1261              
1262             =head1 SEE ALSO
1263              
1264             L<DateTime::TimeZone::Catalog>, L<DateTime::TimeZone::Alias>, L<DateTime::TimeZone>
1265              
1266             =head1 COPYRIGHT & LICENSE
1267              
1268             Copyright(c) 2022 DEGUEST Pte. Ltd.
1269              
1270             All rights reserved
1271              
1272             This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
1273              
1274             =cut