in reply to (jcwren) Re: Date munging suddenly broken
in thread Date munging suddenly broken

I know that 4 is Thursday; that's intentional. People in general start creating their status reports on Thursday -- if they start on Wednesday, I want them to append to the previous Friday. If it's Thursday, I want them to append to the coming Friday. Sorry I didn't make that clear.

Anyway, irrespective of that, performance isn't particularly an issue with this, so I'll gladly take your advice re: loading the said module. Thanks!

    - Muse

Replies are listed 'Best First'.
(jcwren) Re: (2) Date munging suddenly broken
by jcwren (Prior) on Oct 05, 2000 at 02:11 UTC
    Ah, OK. Here's a version that does it algorithmically, rather than using Date::Manip. You'll have to correct for the "If it's Thursday" problem, but this will generate a list of all Friday's in the year.

    Also, just as a side note, if you're not using 'use strict', and -w, I'd highly recommend enabling that. It'll help you track down problems a lot faster.
    #!/usr/local/bin/perl -w use strict; use Time::Local 'timelocal_nocheck'; { my $friday_date; my $now = time (); # Not used, here, but it's where the time would + come from for (my $i = 0; $i < 365; $i++) { $now = timelocal_nocheck (0, 0, 0, $i, 0, 2000); my ($sec,$min,$hour,$mday,$mon,$year,$wday,$rest) = localtime ($ +now); my $then = ((((5 - $wday) + 7) % 7) * (60 * 60 * 24)); ($sec,$min,$hour,$mday,$mon,$year,$rest) = localtime ($now + $th +en); $mon += 1; $year += 1900; my $temp = sprintf ("%02d/%02d/%04d", $mon, $mday, $year); if ($friday_date ne $temp) { print "$temp\n"; $friday_date = $temp; } } }
    --Chris

    e-mail jcwren
RE: Re: Date munging suddenly broken
by merlyn (Sage) on Oct 05, 2000 at 10:39 UTC
    So, you want something like:
    $now = time; $hour = (localtime $now)[2]; $now += (12 - $hour)*60*60; # offset to noon-hour so DST doesn't fry u +s $dow = (localtime $now)[6]; $now += (($dow < 4 ? -2 : 5) - $dow)*24*60*60; ($y, $m, $d) = (localtime $now)[5,4,3]; $file = sprintf "%d_%d_%d.html", $m+1, $d, $y+1900;
    perhaps?

    -- Randal L. Schwartz, Perl hacker