best way to to make an easy to use "local" DateTime object?

[email protected] (Mark Stosberg)
Newsgroups perl.datetime
Message-ID <[email protected]>
We have a large project that we would like to use our "local" time zone
across many calls to DateTime. We are considering implementing something
like this:

###
package DateTimeX::Local;
use parent 'DateTime';

# Calculate and cache the local time zone based on the OS.
our $LocalTZ = DateTime::TimeZone->new( name => 'local' );

sub new { shift->SUPER::new( time_zone => $LocalTZ, @_ ) };
sub now { shift->SUPER::now( time_zone => $LocalTZ, @_ ) };
###

This works for us, but there are probably some other places where
'floating' is the default time zone... I see that 'floating' is
hard-coded in a few places as the default time zone.

It seems like a useful alternate design might be add this class method:

 DateTime->DefaultTimeZone($tz);

... and refactor to use that instead of the hardcoded value of
'floating' everywhere.

We could then stick a call to DateTime->DefaultTimeZone somewhere, and
developers could go on using DateTime as usual for the most part.

The problem with the DateTimeX::Local solution is that someone could
slip up and use DateTime directly, and everything would work until...
after 7 or 8pm Eastern Time. :) . Also, the approach would break if a
new location in DateTime was added that also used the 'floating' default
as a hard-coded value.

What do you think about the best way to set the time zone to "local"
across a large project?

   Mark
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.