Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

Date::Calc DST - is this a bug?

by fbicknel (Beadle)
on Dec 11, 2012 at 20:57 UTC ( #1008401=perlquestion: print w/replies, xml ) Need Help??
fbicknel has asked for the wisdom of the Perl Monks concerning the following question:

See my reply to myself.... but I'll leave this here as a model of what not to do. *blush*

Is this a bug or is it not documented properly?

Documentation for Gmtime() says:

The daylight savings time flag ("$dst") will be "-1" if this information is not available on your system, "0" for no daylight savings time (i.e., winter time) and "1" when daylight savings time is in effect.

This isn't clear: if it means "dst is in effect NOW on your system", then it accurately depicts what happens when you try this code:

#!/usr/bin/perl use Date::Calc qw (:all); $summer_time = Mktime (2012, 7, 3, 1, 48, 0); $winter_time = Mktime (2012, 12, 3, 1, 48, 0); ($year,$month,$day, $hour,$min,$sec, $doy,$dow,$dst) = Gmtime ($summer_time); print "Summer: $year,$month,$day,$hour,$min,$sec,$doy,$dow,$dst\n"; ($year,$month,$day,$hour,$min,$sec,$doy,$dow,$dst) = Gmtime ($winter_time); print "Winter: $year,$month,$day,$hour,$min,$sec,$doy,$dow,$dst\n"; __END__ Results: Summer: 2012,7,3,5,48,0,185,2,0 Winter: 2012,12,3,6,48,0,338,1,0

Note the last $dst value in each list returned is always 0. My guess is that if I wait about 6 months and try again, it will always return 1.

What I was hoping for was a flag that was set based on the time requested, as apparently all the other fields in the input portray.

I mean, what good would it do if I asked for Gmtime ($winter_time) and it returned the current year instead of the year I asked for? :)

Replies are listed 'Best First'.
Re: Date::Calc DST - is this a bug?
by ww (Archbishop) on Dec 11, 2012 at 23:06 UTC
Re: Date::Calc DST - is this a bug?
by fbicknel (Beadle) on Dec 11, 2012 at 21:01 UTC
    How about that. Read a little further and Localtime() provides the same flag. But this time it works as expected.

    Sorry, I jumped on the first thing I found, now.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1008401]
Approved by ww
[stevieb]: ...and throw some of your existing code into the equation as well, just so readers know you've given a try at it ;)
[james28909]: ok
[stevieb]: davido thanks for the link ;) I was being the typical lazy
[davido]: date parsing is hard. The more examples you can provide of the input (within reason) and expected output, the better.
[stevieb]: agreed. That's why I said at least a half-dozen. If enough of the different formats are present, the date/time folk may not have to request more. If they do, then at least there was a decent base to start with
[stevieb]: I do date and time transformations in both Perl and Python, but not frequently enough to not have to search for the format params etc ;)

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (4)
As of 2017-04-29 02:42 GMT
Find Nodes?
    Voting Booth?
    I'm a fool:

    Results (531 votes). Check out past polls.