DateTime::TimeZone::Local - Determine the local system's time zone |
DateTime::TimeZone::Local - Determine the local system's time zone
version 1.97
my $tz = DateTime::TimeZone->new( name => 'local' );
my $tz = DateTime::TimeZone::Local->TimeZone();
This module provides an interface for determining the local system's time zone. Most of the functionality for doing this is in OS-specific subclasses.
This class provides the following methods:
TimeZone()
This attempts to load an appropriate subclass and asks it to find the
local time zone. This method is called by when you pass ``local'' as the
time zone name to DateTime:TimeZone->new()
.
If your OS is not explicitly handled, you can create a module with a
name of the form DateTime::TimeZone::Local::$^O
. If it exists, it
will be used instead of falling back to the Unix subclass.
If no OS-specific module exists, we fall back to using the Unix subclass.
See the DateTime::TimeZone::Local::Unix manpage, the DateTime::TimeZone::Local::Win32 manpage, and the DateTime::TimeZone::Local::VMS manpage for OS-specific details.
If you want to make a new OS-specific subclass, there are several methods provided by this module you should know about.
Methods()
This method should be provided by your class. It should provide a list of methods that will be called to try to determine the local time zone.
Each of these methods is expected to return a new
DateTime::TimeZone
object if it determines the time zone.
FromEnv()
This method tries to find a valid time zone in an %ENV
value. It
calls $class->EnvVars()
to determine which keys to look at.
To use this from a subclass, simply return ``FromEnv'' as one of the
items from $class->Methods()
.
EnvVars()
This method should be provided by your subclass. It should return a
list of env vars to be checked by $class->FromEnv()
.
_IsValidName($name)
Given a possible time zone name, this returns a boolean indicating whether or not the name looks valid. It always return false for ``local'' in order to avoid infinite loops.
Here is a simple example subclass:
package DateTime::TimeZone::SomeOS;
use strict; use warnings;
use base 'DateTime::TimeZone::Local';
sub Methods { qw( FromEnv FromEther ) }
sub EnvVars { qw( TZ ZONE ) }
sub FromEther { my $class = shift;
... }
Bugs may be submitted through the RT bug tracker (or bug-datetime-timezone@rt.cpan.org).
I am also usually active on IRC as 'drolsky' on irc://irc.perl.org
.
Dave Rolsky <autarch@urth.org>
This software is copyright (c) 2016 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.
DateTime::TimeZone::Local - Determine the local system's time zone |