DateTime::TimeZone::Local

Section: User Contributed Perl Documentation (3)
Updated: 2021-01-26
Page Index
 

NAME

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

VERSION

version 2.47  

SYNOPSIS

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

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

 

DESCRIPTION

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.  

USAGE

This class provides the following methods:  

DateTime::TimeZone::Local->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 DateTime::TimeZone::Local::Unix, DateTime::TimeZone::Local::Android, DateTime::TimeZone::Local::hpux, DateTime::TimeZone::Local::Win32, and DateTime::TimeZone::Local::VMS for OS-specific details.  

SUBCLASSING

If you want to make a new OS-specific subclass, there are several methods provided by this module you should know about.  

$class->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 can successfully determine the time zone.  

$class->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()".  

$class->EnvVars()

This method should be provided by your subclass. It should return a list of env vars to be checked by "$class->FromEnv()".

Your class should always include the "TZ" key as one of the variables to check.  

$class->_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.  

EXAMPLE SUBCLASS

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;

      ...
  }

 

SUPPORT

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

I am also usually active on IRC as 'autarch' on "irc://irc.perl.org".  

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) 2021 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.


 

Index

NAME
VERSION
SYNOPSIS
DESCRIPTION
USAGE
DateTime::TimeZone::Local->TimeZone()
SUBCLASSING
$class->Methods()
$class->FromEnv()
$class->EnvVars()
$class->_IsValidName($name)
EXAMPLE SUBCLASS
SUPPORT
SOURCE
AUTHOR
COPYRIGHT AND LICENSE