On Thu, Jul 15, 2010 at 10:43:20AM -0500, matt.pet...@thomsonreuters.com wrote:
> Probably a simple question, but I'm not seeing the answer... I want to
> find out the difference in seconds between two dates, and I thought this
> would be the way to do it (see below).  I expected the last output line
> to be 'dur is: 1320', which is 22 minutes times 60 seconds, not 'dur is:
> 0'.  Any guidance from anyone?  I'm sure I'm misunderstanding something
> simple and critical...

Try this:

    use strict;
    use warnings;
    use DateTime;
    use DateTime::Duration;
    use Data::Dumper;

    my $dt1 = DateTime->now->set_time_zone( 'America/Chicago' );
    my $dt2 = $dt1->clone->add( minutes => 22 );

    my $difference = $dt2->subtract_datetime_absolute($dt1);
    my $dur_secs = $difference->in_units('seconds');

    print Dumper($difference), "\n";
    print "in seconds: $dur_secs\n";

prints:

$VAR1 = bless( {
                 'seconds' => '1320',
                 'minutes' => 0,
                 'end_of_month' => 'wrap',
                 'nanoseconds' => 0,
                 'days' => 0,
                 'months' => 0
               }, 'DateTime::Duration' );

in seconds: 1320


-- 
          "I felt a kind of forlorn sense of being lost in a world of
          incredibly stupid and malicious dwarfs." - Aleister Crowley
            .             .            .            .             .
Karen Etheridge, ka...@etheridge.ca       GCS C+++$ USL+++$ P+++$ w--- M++
http://etheridge.ca/                      PS++ PE-- b++ DI++++ e++ h(-)

Reply via email to