http://qs1969.pair.com?node_id=504771

JPaul has asked for the wisdom of the Perl Monks concerning the following question:

Greetings monks;

I'm trying to get a very simple timezone display going without having to install the rather heavy DateManip or DateTime groups of modules (Which seemingly require copious amounts of modules).
I live in CST, and the following works:

$ENV{TZ} = "America/New_York"; my $now_string = strftime "%a %b %e %H:%M:%S %Y %c", localtime; print "$now_string\n";
Which prints:
Tue Nov  1 17:40:54 2005 Tue 01 Nov 2005 05:40:54 PM EST
However, if I try the following:
$ENV{TZ} = "America/Chicago"; my $now_string = strftime "%a %b %e %H:%M:%S %Y %c", localtime; print "$now_string\n"; $ENV{TZ} = "America/New_York"; $now_string = strftime "%a %b %e %H:%M:%S %Y %c", localtime; print "$now_string\n";
I get:
Tue Nov  1 16:41:08 2005 Tue 01 Nov 2005 04:41:08 PM CST
Tue Nov  1 16:41:08 2005 Tue 01 Nov 2005 04:41:08 PM EST

Which is clearly more than a little odd.
I'm not seeing an obvious difference here in methodology - which means that there's either a bug in localtime(), or I'm missing something - and I'm putting money on it being my problem.

I can, of course, move to using one of the larger modules - that is a valid option, but I'd prefer to not have to resort to doing so when it appears localtime() should be able to handle this properly.
(I'm on a Linux machine running Debian, if it helps)

My thanks;

-- Alexander Widdlemouse undid his bellybutton and his bum dropped off --