Stories
Slash Boxes
Comments
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.
  • http://datetime.perl.org/index.cgi?FAQSampleCalculations [perl.org]

    # As a Perl list
    my $start_dt = DateTime->new(year => 1998, month  => 4,  day => 7);
    my $end_dt   = DateTime->new(year => 1998, month  => 7,  day => 7);

    my @list = ();
    for (my $dt = $start_dt->clone();
         $dt <= $end_dt;
         $dt->add(weeks => 1) )
    {
      push @list, $dt->clone();
    }

    # As a DateTime::Set.  We use DateTime::Event::Recurrence to easily
    # c

    • The first of those solutions only works if you know the size of the intervals you want to partition into ahead of time. I want to deal with the general case: say I have two moments in time that are exactly 29 days, 3 hours, 1 minute, and 17 seconds apart, and I want to divide it into 8 equal intervals? (My next journal entry does reveal the solution, but I'm just responding to show that I'm dealing with a harder problem than your solution addressed.)

      I think the same is true of the second solution. The crucial issue is how to perform meaningful math on a DateTime::Duration. And the real issue behind it is that I'm always dealing with durations that are the result of subtracting two DateTime objects, and the output of the overloaded subtraction operator is a DateTime::Duration that is basically useless for most of the purposes I want to use it for. The good news is there's a DateTime->subtract_datetime_absolute method that yields what I want and, in my opinion, should be what the subtraction operator overloads to.

      --
      J. David works really hard, has a passion for writing good software, and knows many of the world's best Perl programmers