1Date::Manip::TZ(3)    User Contributed Perl Documentation   Date::Manip::TZ(3)
2
3
4

NAME

6       Date::Manip::TZ - an interface to the time zone data
7

SYNOPSIS

9          use Date::Manip::TZ;
10          $tz = new Date::Manip::TZ;
11
12       Data for most (and hopefully all) time zones used around the world have
13       been gathered and is publicly available in the zoneinfo (or Olson)
14       database.
15
16       This module uses the data from the zoneinfo database to perform various
17       time zone operations.
18

DESCRIPTION

20       Every time zone has some of the following characteristics:
21
22       name
23           Every time zone has a unique name. In the zoneinfo database, these
24           are something similar to:
25
26              America/New_York
27
28       aliases
29           Time zones may have (but are not required to have) one or more
30           aliases.  Each alias is unique, and is not the same as any time
31           zone name. An alias can be used in exactly the same way as a name.
32
33       periods
34           Every time zone is broken up into periods. Each period describes
35           how a portion of time relates to GMT, and how it might be
36           expressed.
37
38       Each period includes the following information:
39
40       start time, end time
41           The period begin and ends at certain times. The times are included
42           both as an absolute GMT time, and as a wallclock time.  The
43           wallclock start time is the time that will be on a clock just as
44           the period starts (i.e. after a time change). The wallclock end
45           time is the time on a clock immediately before the period ends.
46
47       offset
48           The entire period has an offset which is how much the wallclock
49           time differs from GMT.
50
51       abbreviation
52           When expressing the time period, an abbreviation (such as EST) is
53           typically used.
54
55       daylight saving time flag
56           Every period is categorized as a standard time or a daylight saving
57           time. The flag will be 1 if it is a daylight saving time, or 0 if
58           it is a standard time.
59
60       Date::Manip includes all of the data for all of the time zones from the
61       zoneinfo database. This data is available from:
62
63          ftp://ftp.iana.org/tz/
64
65       Additional data from other standards are also used.
66
67       The zoneinfo database is not necessary in order to use Date::Manip.
68       Instead, all of that data has been extracted and stored in a series of
69       other modules which are used to handle each time zone.  In that way,
70       Date::Manip has no dependency on any other source of data.
71
72       The Date::Manip::Zones document contains detailed information on the
73       data available.
74

METHODS

76       In all methods, the following variables are used:
77
78       $zone
79           This is a string which contains a valid time zone name.  For
80           example:
81
82             America/New_York
83
84       $alias
85           This is a strings which contains a valid time zone name, or a valid
86           time zone alias. For example:
87
88             America/New_York
89             US/Eastern
90             EST5EDT
91
92       $abbrev
93           This is a string which contains a valid time zone abbreviation. For
94           example:
95
96             EST
97
98       $offset
99           This is a time zone entered as an offset. An offset is either a
100           string of one of the formats:
101
102             +HH
103             +HHMM
104             +HHMMSS
105             +HH:MM
106             +HH:MM:SS
107
108           or it can be a list reference:
109
110             [HH,MM,SS]
111
112           If a list reference is used, the sign must be included with all
113           values.  So, the offset "-05:30" would be the list reference:
114
115             [-5,-30,0]
116
117       $dstflag
118           This is always one of the values: std, stdonly, dst, dstonly
119
120           It defaults to "std" if it is not present. When determining a time
121           zone, it is usually necessary to check a number of different time
122           zone and DST combinations.
123
124           If $dstflag is "std", it will check both standard and daylight
125           saving times, but will give preference to standard times. If
126           $dstflag is "stdonly", only standard times will be checked.
127
128           The "dst" flag will search both, but give preference to daylight
129           saving times.  The "dstonly" values will only use daylight saving
130           times.
131
132       $date
133           A date is always a string containing a date in one of the formats:
134
135              YYYYMMDDHH:MN:SS
136              YYYY-MM-DD-HH:MN:SS
137              YYYYMMDDHHMNSS
138
139           or a list reference:
140
141              [Y,M,D,H,MN,S]
142
143       $isdst
144           This is 0 if a date is in standard time, 1 if it is in daylight
145           saving time.
146
147       $period
148           A period is a list reference currently containing the following
149           items:
150
151              [ $dateUT, $dateLT, $offsetstr, $offset, $abbrev, $isdst,
152                $endUT, $endLT, $begUTs, $begLTs, $endUTs, $endLTs ]
153
154           $dateUT and $dateLT are the starting date of the period (i.e. the
155           first second in a period) in universal (GMT) time and local
156           (wallclock) time. $endUT and $endLT are the end date of the period
157           (i.e. the last second in a period) in universal and local time.
158           These are all stored as list references.
159
160           $offsetstr is the string representation of the offset ("+05:00:00")
161           and $offset is the corresponding list reference form ([5,0,0]).
162
163           $abbrev is the abbreviation that applies during this period, and
164           $isdst is 0 or 1 if it is standard or daylight saving time.
165
166           When accessing the elements in a period, use ONLY positive indices.
167           In other words, to get $endUT, access it as $$period[6], NOT as
168           $$period[-2], since I am considering adding more information to the
169           period description that may speed up performance.
170
171           $begUTs is the string representation (YYYYMMDDHH:MN:SS) of $begUT.
172           Similar for $begLTs, $endUTs, and $endLTs.
173
174       The following methods are available:
175
176       base
177       config
178       err
179       new
180       new_config
181           Please refer to the Date::Manip::Obj documentation for these
182           methods.
183
184       all_periods
185              @periods = $tz->all_periods($zone,$year);
186
187           This returns the description of all time zone periods that occur
188           (in full or in part) during the given year.
189
190       convert
191       convert_to_gmt
192       convert_from_gmt
193       convert_to_local
194       convert_from_local
195           These functions convert a date from one time zone to another.
196
197              ($err,$date,$offset,$isdst,$abbrev) =
198                 $tz->convert($date,$from,$to [,$isdst]);
199
200           This converts a date in the time zone given by $from to the time
201           zone given by $to.
202
203              ($err,$date,$offset,$isdst,$abbrev) =
204                 $tz->convert_to_gmt($date [,$from] [,$isdst]);
205
206           This converts a date to GMT. If $from is given, it is the current
207           time zone of the date. If $from is omitted, it defaults to the
208           local time zone.
209
210           The value of $isdst returned is always 0.
211
212              ($err,$date,$offset,$isdst,$abbrev) =
213                 $tz->convert_from_gmt($date [,$to]);
214
215           This converts a date from GMT to another time zone. If $to is
216           given, the date is converted to that time zone. Otherwise, it is
217           converted to the local time zone.
218
219              ($err,$date,$offset,$isdst,$abbrev) =
220                 $tz->convert_to_local($date [,$from] [,$isdst]);
221              ($err,$date,$offset,$isdst,$abbrev) =
222                 $tz->convert_from_local($date [,$to] [,$isdst]);
223
224           Similar to the convert_to_gmt and convert_from_gmt functions. If
225           $from or $to are omitted, they default to GMT.
226
227           If there is any ambiguity about whether $date is in DST or not
228           (i.e.  if it is a date that is repeated during a time change due to
229           the clock being moved back), the $isdst option can be passed in as
230           an argument (it should be 0 or 1) to say which time to use. It is
231           ignored in all cases where $date can be determined without that
232           information.
233
234           The $isdst value passed back is 1 if the converted date is in DST.
235           The $offset value passed back is a list reference containing the
236           offset from GMT. $abbrev passed back is the time zone abbreviation.
237
238           Error codes are:
239
240              0  No error
241              1  Invalid arguments
242              2  Invalid FROM zone
243              3  Invalid TO zone
244              4  Invalid date
245
246       curr_zone
247              $tz->curr_zone();
248
249           This returns the system time zone. The system time zone is
250           determined using the methods described below in the DETERMINING THE
251           SYSTEM TIME ZONE section.
252
253           This is the time zone that is used by default unless the SetDate or
254           ForceDate config variable is set to a different zone.
255
256              $tz->curr_zone(1);
257
258           This clears the system time zone and re-determines it using the
259           methods described below.
260
261           The main reason to do this is if the curr_zone_methods method is
262           used to change how the time zone is determined.
263
264       curr_zone_methods
265              $tz->curr_zone_methods(@methods);
266
267           This sets the list and order of methods to use in determining the
268           local time zone. The various methods available are listed below in
269           the section DETERMINING THE SYSTEM TIME ZONE.
270
271           Some methods may require one or more arguments. For example, the
272           method named "mainvar" takes an option that is the name of a
273           variable. The arguments must be included in the @methods list
274           immediately after the method name (so @methods is actually a
275           mixture of method names and arguments).
276
277           This method may not be used in any environment where taint checking
278           is enabled. If it is, it will issue a warning, but will NOT change
279           the method list.
280
281       date_period
282              $period = $tz->date_period($date,$zone,$wallclock [,$isdst]);
283
284           This returns the period information for the given date. $date
285           defaults to GMT, but may be given as local (i.e. wallclock) time if
286           $wallclock is non-zero. The period information is described in the
287           periods method below.
288
289           If a wallclock time is given, no period is returned if the
290           wallclock time doesn't ever appear (such as when a time change
291           results in the clock moving forward "skipping" a period of time).
292           If the wallclock time appears twice (i.e. when a time change
293           results in the clock being set back), the $isdst variable is used.
294           The standard time is used unless $isdst is non-zero.  $isdst is
295           ignored except in the case where there are two possible periods.
296
297       define_abbrev
298              ($err,$val) = $tz->define_abbrev($abbrev,@zone);
299
300           When encountering an abbreviation, by default, all time zones which
301           ever include the abbreviation will be examine in the order given in
302           the Date::Manip::Zones manual.
303
304           Occasionally, it may be necessary to change the order. This is true
305           if you are parsing dates in a time zone which uses an abbreviation
306           which is also used in another time zone, and where the other time
307           zone is given preference. As an example, the abbreviation "ADT"
308           will default to the "Atlantic/Bermuda" time zone. If you are in the
309           "America/Halifax" time zone (which also uses that abbreviation),
310           you may want to change the order of time zones.
311
312           This will take an abbreviation (which must be a known
313           abbreviation... there is no means of defining a totally new
314           abbreviation) and a list of zones.  This will set the list of zones
315           that will be checked, and the order in which they are checked, when
316           a date is encountered with the given abbreviation. It is not
317           necessary that the list include every zone that has ever used the
318           abbreviation, but it may not include a zone that has never used it.
319
320           If $abbrev is "reset", all abbreviations are reset to the standard
321           values.  If @zone includes only the element 'reset', the default
322           list for $abbrev is restored.
323
324           The following error codes are returned:
325
326              0  No error
327              1  $abbrev is not a valid abbreviation in any time zone
328              2  A zone (returned as $val) is not a valid time zone
329              3  A zone (returned as $val) does not use the abbreviation
330
331           For more information about the different zones which may correspond
332           to each abbreviation, and the order in which they will be examined
333           by default, refer to the Date::Manip::Zones manual.
334
335       define_alias
336              $err = $tz->define_alias($alias,$zone);
337
338           This will define a new alias (or override an existing alias). $zone
339           must be a valid zone or an error is returned.
340
341           For more information about the different aliases which are set by
342           default, refer to the Date::Manip::Zones manual.
343
344           If $alias is "reset", all aliases will be reset to the standard
345           values.  If $zone is "reset", $alias will be reset to the standard
346           value.
347
348       define_offset
349              ($err,$val) = $tz->define_offset($offset, [$dstflag,] @zone);
350
351           This is similar to the define_abbrev method. When an offset is
352           encountered, all time zones which have ever included that offset
353           are checked. This will defined which time zones, and in what order,
354           they should be checked.
355
356           The zones to both standard and daylight saving times which include
357           the offset (if $dstflag is "std" or "dst") or to only one or the
358           other.
359
360           If $offset is "reset", all lists are reset to the default values.
361           If @zone includes only the element 'reset', the default list and
362           order is restored for $offset ($dstflag must not be given).
363
364           The following error codes are returned:
365
366              0  No error
367              1  $offset is not a valid offset in any time zone
368              2  $offset is not a valid offset in the selected
369                 time (if doing "dstonly" or "stdonly")
370              3  A zone (returned as $val) is not a valid time zone
371              4  A zone (returned as $val) does not use the offset
372              5  A zone (returned as $val) does not include the
373                 offset in the selected time (if doing "dstonly"
374                 or "stdonly")
375
376              9  Offset is not a valid offset
377
378       periods
379              @periods = $tz->periods($zone,$year);
380
381           This returns the description of all time zone periods that begin
382           during the year given. The year is measured in universal (GMT)
383           time.
384
385           If no time zone period starts in the given year, nothing is
386           returned.
387
388              @periods = $tz->periods($zone,undef,$year);
389
390           This returns all periods that begin in any year from 0001 to $year.
391
392              @periods = $tz->periods($zone,$year0,$year1);
393
394           This returns all periods that begin in any year from $year0 to
395           $year1.
396
397       tzdata
398       tzcode
399              $vers = $tz->tzdata();
400              $vers = $tz->tzcode();
401
402           These return the versions of the tzdata and tzcode packages used to
403           generate the modules.
404
405       zone
406              $zone = $tz->zone(@args);
407              @zone = $tz->zone(@args);
408
409           This function will return a list of all zones, or the default zone,
410           which matches all of the supplied information. In scalar context,
411           it will return only the default zone. In list context, it will
412           return all zones.
413
414           @args may include any of the following items, and the order is not
415           important.
416
417              A zone name or alias ($alias)
418
419              A zone abbreviation ($abbrev)
420
421              An offset ($offset)
422
423              A dstflag ($dstflag)
424
425              A date ($date)
426
427           It is NOT valid to include two of any of the items. Any time zone
428           returned will match all of the data supplied.
429
430           If an error occurs, undef is returned. If no zone matches, an empty
431           string, or an empty list is returned.
432
433           The order of the zones will be determined in the following way:
434
435           If $abbrev is given, the order of time zones will be determined by
436           it (and $dstflag). If $dstflag is "std", all zones which match
437           $abbrev in standard time are included, followed by all that match
438           $abbrev in saving time (but no duplication is allowed). The reverse
439           is true if $dstflag is "dst".
440
441           If $abbrev is not given, but $offset is, $offset (and $dstflag)
442           will determine the order given. If $dstflag is "std", all zones
443           which match $offset in standard time are included, followed by all
444           that match $offset in saving time (but no duplication is allowed).
445           The reverse is true if $dstflag is "dst".
446
447           If $date is given, only zones in which $date will appear in a zone
448           that matches all other information are given. $date is a wallclock
449           time.
450
451           If no $zone, $abbrev, or $offset are entered, the local time zone
452           may be returned (unless $date is entered, and it doesn't exist in
453           the local time zone).
454
455           NOTE: there is one important thing to note with respect to $dstflag
456           when you are working with a timezone expressed as an offset and a
457           date is passed in. In this case, the default value of $dstflag is
458           "dst" (NOT "stdonly"), and you probably never want to pass in a
459           value of "std" (though passing in "stdonly" is okay).
460
461           For standard offsets (with no minute component), there is always a
462           standard timezone which matches that offset. For example, the
463           timezone "+0100" matches the timezone "Etc/GMT+01", so you will
464           never get a timezone in daylight saving time if $dstflag is "std".
465
466           If you want to pass in a date of 2001-07-01-00:00:00 and an
467           timezone of "+0100" and you want to get a timezone that refers to
468           that date as a daylight saving time date, you must use the $dstflag
469           of "dst" (or "dstonly").
470
471           Because this is almost always the behavior desired, when a zone is
472           passed in as an offset, and a date is passed in, the default
473           $dstflag is "dst" instead of "std". In all other situations, the
474           default is still "std".
475
476           If the timezone is expressed as an abbreviation, this problem does
477           not occur.
478

TIME ZONE INFORMATION IN DATE::MANIP

480       Date::Manip makes use of three potentially different time zones when
481       working with a date.
482
483       The first time zone that may be used is the actual local time zone.
484       This is the time zone that the computer is actually running in.
485
486       The second time zone is the working time zone. Usually, you will want
487       the default time zone to be the local time zone, but occasionally, you
488       may want the default time zone to be different.
489
490       The third time zone is the actual time zone that was parsed, or set,
491       for a date. If a date contains no time zone information, it will
492       default to the working time zone.
493
494       The local time zone is determined using the methods described in the
495       following section. The preferred way is to locate the time zone in some
496       system file, or using some system command, or (in the case of a Windows
497       operating system) to look it up in the registry. If all of these
498       methods fail, the local time zone may be set using either the $::TZ or
499       $ENV{TZ} variables. Please note that these should ONLY be used to set
500       the actual local time zone.
501
502       If you are running in one time zone, but you want to force dates to be
503       specified in an alternate time zone by default, you need to set the
504       working time zone. The working time zone defaults to the local time
505       zone, but this can be changed using either the SetDate or ForceDate
506       config variables. Refer to the Date::Manip::Config manual for more
507       information.
508
509       Finally, when a date is actually parsed, if it contains any time zone
510       information, the date is stored in that time zone.
511

DETERMINING THE SYSTEM TIME ZONE

513       There are a large number of ways available for determining the time
514       zone. Some or all of them may be checked. A list of methods to use is
515       provided by default, and may be overridden by the curr_zone_methods
516       function described above. To override the default order and/or list of
517       methods, just pass in a list of method names (with arguments where
518       necessary), and only those methods will be done, and in the order
519       given.
520
521       The following methods are available:
522
523          Method     Argument(s)    Procedure
524          ======     ===========    =========
525
526          main       VAR            The main variable named VAR is
527                                    checked. E.g. "main TZ" checks
528                                    the variable $::TZ .
529
530          env        TYPE VAR       The named environment variable
531                                    is checked and the type of
532                                    data stored there (TYPE can
533                                    be 'zone' or 'offset' which
534                                    is the number of seconds from
535                                    UTC).
536
537          file       FILE           Look in the given file for any
538                                    one of the following case
539                                    insensitive lines:
540                                       ZONE
541                                       tz = ZONE
542                                       zone = ZONE
543                                       timezone = ZONE
544                                    ZONE may be quoted (single or
545                                    double) and whitespace is
546                                    ignored (except that underscores
547                                    in the zone name may be replaced
548                                    by whitespace on some OSes). If
549                                    the entire line is a zone, it must
550                                    be the first non-blank non-comment
551                                    line in the file.
552
553          command    COMMAND        Runs a command which produces
554                                    a time zone as the output.
555
556          cmdfield   COMMAND N      Runs a command which produces
557                                    whitespace separated fields,
558                                    the Nth one containing the
559                                    time zone (fields are numbered
560                                    starting at 0, or from the
561                                    end starting at -1).
562
563          gmtoff                    Uses the current offset from
564                                    GMT to come up with a best guess.
565
566          registry                  Look up the value in the
567                                    Windows registry. This is only
568                                    available to hosts running a
569                                    Windows operating system.
570
571       Note that the "main" and "env" methods should only be used to specify
572       the actual time zone the system is running in. Use the SetDate and
573       ForceDate config variables to specify an alternate time zone that you
574       want to work in.
575
576       By default, the following methods are checked (in the order given) on
577       Unix systems:
578
579          main     TZ
580          env      zone TZ
581          file     /etc/TIMEZONE
582          file     /etc/timezone
583          file     /etc/sysconfig/clock
584          file     /etc/default/init
585          command  "/bin/date +%Z"
586          command  "/usr/bin/date +%Z"
587          command  "/usr/local/bin/date +%Z"
588          cmdfield /bin/date             -2
589          cmdfield /usr/bin/date         -2
590          cmdfield /usr/local/bin/date   -2
591          gmtoff
592
593       The default methods for Windows systems are:
594
595          main     TZ
596          env      zone TZ
597          registry
598          gmtoff
599
600       The default methods for VMS systems are:
601
602          main     TZ
603          env      zone TZ
604          env      zone SYS$TIMEZONE_NAME
605          env      zone UCX$TZ
606          env      zone TCPIP$TZ
607          env      zone MULTINET_TIMEZONE
608          env      offset SYS$TIMEZONE_DIFFERENTIAL
609          gmtoff
610
611       The default methods for all other systems are:
612
613          main     TZ
614          env      zone TZ
615          gmtoff
616
617       If anyone wants better support for a specific OS, please contact me and
618       we'll coordinate adding it.
619
620       In all cases, the value returned from the method may be any of the
621       following:
622
623          the full name of a time zone (e.g. America/New_York)
624          or an alias
625
626          an abbreviation (e.g. EDT) which will be used to
627          determine the zone if possible
628
629          an offset (+hh, +hhmn, +hh:mm, +hh:mm:ss) from GMT
630
631       The Date::Manip::Zones module contains information about the time zones
632       and aliases available, and what time zones contain the abbreviations.
633

DESIGN ISSUES

635       The design decisions made in writing this module may cause some
636       questions (and probably complaints).  The time zone modules are all
637       generated using scripts (included in the Date::Manip distribution)
638       which use the standard tzdata tools to parse the tzdata files and store
639       that information in perl modules.
640
641       I'd like to address some of them, to avoid answering some of the "why
642       did you do it that way" remarks. I do welcome discussion about these
643       decisions... but preferably after you understand why those decisions
644       were made so that that we have an informed basis to begin a discussion.
645
646       Why not use existing zoneinfo files
647           Some people will probably think that I should have written an
648           interface to the zoneinfo files which are distributed with most
649           operating systems.  Although I considered doing that, I rejected
650           the idea for two reasons.
651
652           First, not all operating systems come with the zoneinfo databases
653           in a user accessible state (Microsoft for example).  Even those
654           that do include them store the information in various formats and
655           locations.  In order to bypass all that, I have included the data
656           directly in these modules.
657
658           Second, as I was doing my initial investigations into this, I ran
659           into a bug in the Solaris zoneinfo tools (long since fixed I'm
660           sure).  I decided then that I didn't want to depend on an
661           implementation where I could not control and fix the bugs.
662
663       Why not use the native tzdata files
664           Another decision people may question is that I parse the tzdata
665           files and store the data from them in a large number of perl
666           modules instead of creating an interface to the tzdata files
667           directly. This was done solely for the sake of speed.  Date::Manip
668           is already a slow module.  I didn't want to slow it down further by
669           doing the complex parsing required to interpret the tzdata files
670           while manipulating dates.  By storing the data in these modules,
671           there is little or no parsing done while using Date::Manip modules.
672           It costs a little disk space to store this information... but very
673           little of it is actually loaded at runtime (time zone data is only
674           loaded when the time zone is actually referred to), so I feel it's
675           a good tradeoff.
676
677       Why store the information in so many files
678           The data from the native tzdata files are parsed and stored in two
679           sets of modules. These include almost 500 Date::Manip::Offset::*
680           modules and almost 450 Date::Manip::TZ::* modules.
681
682           I note that on my linux box, /usr/share/zoneinfo (which contains
683           data files generated from the tzdata files) contains over 1700
684           files, so I'm not doing anything "new" by breaking up the
685           information into separate files. And doing so has a huge impact on
686           performance... it is not necessary to load and/or manipulate data
687           from time zones which are not in use.
688
689           The minute I made the decision to distribute the timezone
690           information myself, as opposed to using the system version, it was
691           a given that there would be a lot of files.
692
693           These modules are loaded only when the time zone or offset is
694           actually used, so, unless dates from around the world are being
695           parsed, only a very small number of these modules will actually be
696           loaded. In many applications, only a single TZ module will be
697           loaded. If parsing dates which have timezone information stored as
698           offsets, one or two Offset modules will also be loaded.
699
700       The disk space seems excessive
701           Currently, the disk usage of the perl files is around 9 MB. Total
702           disk usage for /usr/share/zoneinfo on my computer is around 4 MB.
703           There are a couple of differences.
704
705           The primary difference is that the zoneinfo files are stored in a
706           binary (and hence, more compressed) version, where the perl modules
707           have all the data in pure text.
708
709           Since these are all automatically generated and used, it may be
710           beneficial to store the data in some packed binary format instead
711           of the fully expanded text form that is currently in use. This
712           would decrease the disk space usage, and might improve performance.
713           However, the performance improvement would happen only once per
714           timezone, and would make for more complicated code, so I'm not very
715           interested in pursuing this.
716
717           Another aspect of the current modules is that they all include pod
718           documentation. Although not necessary, this allows users to easily
719           see what modules handle which time zones, and that's nice. It also
720           allows me to use pod_coverage tests for the module which is a nice
721           check to make sure that the documentation is accurate.
722
723           All told, I don't consider the disk usage excessive at all.
724

KNOWN PROBLEMS OR ISSUES

726       Unable to determine Time Zone
727           When using Date::Manip, when the module is initialized, it must be
728           able to determine the local time zone. If it fails to do so, an
729           error will occur:
730
731              Unable to determine Time Zone
732
733           and the script will exit.
734
735           In the past, this was the most common problem with using
736           Date::Manip .  With the release of 6.00, this problem should be
737           significantly less common. If you do get this error, please refer
738           to the section above DETERMINING THE SYSTEM TIME ZONE for
739           information about determining the local time zone. I am also
740           interested in hearing about this so that I can update the default
741           list of methods to be able to determine the local time zone better.
742
743       Asia/Jerusalem time zone
744           The Asia/Jerusalem time zone has a non-standard way of specifying
745           the start and end of Daylight Saving Time based on the Hebrew
746           calendar.
747
748           As a result, there is no way to specify a simple rule to define
749           time zone changes for all years in the future. As such, this module
750           supports all time zone changes currently specified in the zoneinfo
751           database (which currently goes to the year 2037) but does not
752           attempt to correctly handle zone changes beyond that date. As a
753           result, Date::Manip should not be used to parse dates in the
754           Jerusalem time zone that are far enough in the future that
755           information is not included in the current version of the zoneinfo
756           database.
757
758       LMT and zzz abbreviations
759           Both the LMT and zzz abbreviations are used in the zoneinfo
760           databases.  LMT is use for most time zones for the times before the
761           Gregorian calendar was adopted, and zzz is used for a few where the
762           time zone was created and no description of dates prior to that are
763           supported. Both LMT and zzz are basically ignored in parsing dates
764           (because there is no reasonable way to determine which zone they
765           are referring to), and will be treated as the local time zone
766           regardless.
767

KNOWN BUGS

769       None known.
770

BUGS AND QUESTIONS

772       Please refer to the Date::Manip::Problems documentation for information
773       on submitting bug reports or questions to the author.
774

SEE ALSO

776       Date::Manip        - main module documentation
777

LICENSE

779       This script is free software; you can redistribute it and/or modify it
780       under the same terms as Perl itself.
781

AUTHOR

783       Sullivan Beck (sbeck@cpan.org)
784
785
786
787perl v5.16.3                      2014-06-09                Date::Manip::TZ(3)
Impressum