Provided by: libdatetime-timezone-perl_2.64-1+2025a_all bug

NAME

       DateTime::TimeZone::Local::Unix - Determine the local system's time zone on Unix

VERSION

       version 2.64

SYNOPSIS

         my $tz = DateTime::TimeZone->new( name => 'local' );

         my $tz = DateTime::TimeZone::Local->TimeZone();

DESCRIPTION

       This module provides methods for determining the local time zone on a Unix platform.

HOW THE TIME ZONE IS DETERMINED

       This class tries the following methods of determining the local time zone, in the order listed here:

       •   $ENV{TZ}

           It checks $ENV{TZ} for a valid time zone name.

       •   /etc/timezone

           If this file exists, it is read and its contents are used as a time zone name.

           Note  that  this  file may be out of date on many systems, as modern distros may not do a good job of
           updating this file. If you find that this file is  not  being  updated,  you  may  want  to  consider
           deleting it so that one of the following methods can be used.

       •   /etc/localtime

           If  this  file is a symlink to an Olson database time zone file (usually in /usr/share/zoneinfo) then
           it uses the target file's path name to determine the time zone name. For  example,  if  the  path  is
           /usr/share/zoneinfo/America/Chicago, the time zone is "America/Chicago".

           Some  systems  just  copy  the  relevant file to /etc/localtime instead of making a symlink.  In this
           case, we look in /usr/share/zoneinfo for a file that has the same size and content as  /etc/localtime
           to determine the local time zone.

       •   /etc/TIMEZONE

           If  this file exists, it is opened and we look for a line starting like "TZ = ...". If this is found,
           it should indicate a time zone name.

       •   /etc/sysconfig/clock

           If this file exists, it is opened and we look for a line starting like "TIMEZONE = ..."  or  "ZONE  =
           ...". If this is found, it should indicate a time zone name.

       •   /etc/default/init

           If this file exists, it is opened and we look for a line starting like "TZ=...". If this is found, it
           should indicate a time zone name.

       Note:  Some  systems such as virtual machine boxes may lack any of these files. You can confirm that this
       is case by running:

           $ ls -l /etc/localtime /etc/timezone /etc/TIMEZONE \
               /etc/sysconfig/clock /etc/default/init

       If this is the case, then when checking for timezone handling you are likely to get an exception:

           $ perl -wle 'use DateTime; DateTime->now( time_zone => "local" )'
           Cannot determine local time zone

       In that case, you should consult your system man pages for details on how to address that problem. In one
       such case reported to us, a FreeBSD virtual machine had been built without any of these files.  The  user
       was  able  to  run  the  FreeBSD  tzsetup  utility.  That installed /etc/localtime, after which the above
       timezone diagnostic ran silently, i.e., without throwing an exception.

SUPPORT

       Bugs may be submitted at <https://github.com/houseabsolute/DateTime-TimeZone/issues>.

SOURCE

       The     source     code     repository     for      DateTime-TimeZone      can      be      found      at
       <https://github.com/houseabsolute/DateTime-TimeZone>.

AUTHOR

       Dave Rolsky <autarch@urth.org>

COPYRIGHT AND LICENSE

       This software is copyright (c) 2025 by Dave Rolsky.

       This  is  free  software;  you  can  redistribute  it and/or modify it under the same terms as the Perl 5
       programming language system itself.

       The full text of the license can be found in the LICENSE file included with this distribution.

perl v5.40.0                                       2025-01-17               DateTime::TimeZone::Local::Unix(3pm)