DateTime::TimeZone::Local.3pm

Langue: en

Version: 2008-10-27 (ubuntu - 07/07/09)

Section: 3 (Bibliothèques de fonctions)

NAME

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

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 an appropriate subclass does not exist, we fall back to using the Unix subclass.

See DateTime::TimeZone::Local::Unix, 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 determines 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()".

$class->_IsValidName($name)

Given a possible time zone name, this returns a boolean indicating whether or not the 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;
 
       ...
   }
 
 

AUTHOR

Dave Rolsky, <autarch@urth.org> Copyright (c) 2003-2008 David Rolsky. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

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