in reply to Calculating 1-day-before

Hi.
Thanks for all of your replies! :)

In the end I went with Kanji's approach since it uses core Perl modules and I'm running on a shared server.

Still, I'd be interested in knowing how TStanley's code works. Cause I see this complex line of code, but can't really understand what each thing does.
($d,$m,$y)=(localtime((time-60*60*(12+(localtime)[2]))))[3,4,5];
Thanks,
Ralph :)

Edit 2/16/02 dws to add <code> tags

Replies are listed 'Best First'.
Re: Re: Calculating 1-day-before
by steves (Curate) on Feb 16, 2002 at 05:12 UTC

    Let's dissect it:

    time-60*60*(12+(localtime)2)
    That piece is taking the current time and subtracting enough seconds to get to the previous day, accounting for any daylight savings time differences. Since you don't care about the time -- just the date -- that trailing part ((12+(localtime)2)) is just taking you back 12 hours before the start of the current day. A safe way to eliminate daylight savings time issues when only a date is needed. All of this is based on the fact that time() deals with the epoch, which is expressed in seconds: 12 hours times 60 minutes per each hour times 60 seconds per each minute yields the total number of seconds 12 hours before the start of the current day. Let's let this entire result be represented by X.
    ($d, $m, $y) = (localtime(X))3,4,5;

    Is then getting the day/month/year from the calculated epoch time, represented above as X.