Any progress on this?
-ben
On Wed, Apr 30, 2003 at 12:30:01PM +1000, Rick Measham wrote:
On Tue, 29 Apr 2003, Joshua Hoblitt wrote:
I was thinking of something similar to the 'constant' syntax that
quietly creates namespaces.
use DateTime::TimeZone::Alias HST = 'US/Hawaii';
.
.
my $dt = DateTime-new( year = 2003, time_zone = 'HST' );
That seems like the most tidy way of doing things. Of course I won't
have time to work on this for several days so I may not get a vote. :)
On 30/4/03 11:42 AM, Dave Rolsky at [EMAIL PROTECTED] spake thus:
The problem is that parsers need more than this, since they can't just set
a static list of aliases in advance. They have to be able to have EST be
interpreted in multiple ways.
I'm looking at setting a range of 'standard' aliases and allowing options:
use DateTime::TimeZone::Alias EST = 'Australia/Melbourne';
my $dt = DateTime-now( time_zone = 'EST' );
print $dt-offset;
# Returns 36000
use DateTime::TimeZone::Alias EST = 'America/New_York';
my $dt = DateTime-now( time_zone = 'EST' );
print $dt-offset;
# Returns -14400 even though EST is standard time and NY is in Daylight time
because EST is mapped to 'America/New_York'.
use DateTime::TimeZone::Alias;
my $dt = DateTime-now( time_zone = 'EST' );
print $dt-offset;
# Returns -14400 (assumes most people will be thinking about USA).
Apart from the standard zones I'd include other ones like using 'AEST/V' and
'AEST/M' for Australian Eastern Standard/Summer time in Victoria.
'AEST' would default to Sydney (as would 'AEST/NSW' and 'AEST/S') simply
because most people would be expecting Sydney (most of the world seem to
think it's our capital city!)
use DateTime::TimeZone::Alias 'I have a lovely bunch of coconuts' =
'America/Hawaii';
my $dt = DateTime-now( time_zone = 'I have a lovely bunch of coconuts' );
# Obviously the result is Hawaii, I just added this to demonstrate the
ability to use anything as an alias.
I'd also include the A-Z zones (And might even include Adelaide and other
1/2 hour zones as 'X.5'!)
Hmmm .. as I type this I wonder if we should also allow aliasing to custom
zones:
my %NO_DST = (
dst_start_month = 0,
dst_start_day = 0,
dst_start_hour = 0,
dst_end_month = 0,
dst_end_day = 0,
dst_end_hour= 0,
offset = 36000,
dst_offset = 36000,
);
use DateTime::TimeZone::Alias EST = \%NO_DST;
my $dt = DateTime-now( time_zone = 'EST' );
print $dt-offset;
# Returns 36000
For setting things 'permanently' maybe we should read
$ENV{DATETIME_TZ_ALIAS} and ~/.DATETIME_TZ_ALIAS
Developers hooking onto aliases really should either:
1. Provide their own aliases
2. Provide their own data file
3. Not mind if things get screwy
4. Get run over by a large bus.
Cheers!
Rick