raja@1988 has asked for the wisdom of the Perl Monks concerning the following question:

Hi all,

I have two different time variables. Like,

$start= 2012-08-08 17:14:22 $end = 2012-08-10 17:14:22

How do i get the in-between days,hours,minutes,seconds.

Please help.

Thanks,

Pandiyarajan

Replies are listed 'Best First'.
Re^2: Time difference
by Ratazong (Monsignor) on Aug 10, 2012 at 12:41 UTC
    Try Date::Calc, especially the function Delta_YMDHMS.

      Date::Calc is the only date/time module that I use. It is usually overkill, but it has never let me down.

Re^2: Time difference
by Kenosis (Priest) on Aug 10, 2012 at 15:45 UTC

    Excellent suggestion to use Date::Calc. Here's one way to implement it with your data:

    use Modern::Perl; use Date::Calc qw/Delta_YMDHMS/; # From the documentation: # Delta_YMDHMS # ($D_y,$D_m,$D_d, $Dh,$Dm,$Ds) = # Delta_YMDHMS($year1,$month1,$day1, $hour1,$min1,$sec1, # $year2,$month2,$day2, $hour2,$min2,$sec2); # my $start = '2012-08-08 17:14:22'; my $end = '2012-08-10 17:14:22'; my @start = $start =~ /(\d+)/g; my @end = $end =~ /(\d+)/g; my ( $D_y, $D_m, $D_d, $Dh, $Dm, $Ds ) = Delta_YMDHMS( @start, @end ); say "The difference between $start and $end is:\nYears: $D_y, Months: +$D_m, Days: $D_d, Hours: $Dh, Minutes: $Dm, Seconds: $Ds";

    Output:

    The difference between 2012-08-08 17:14:22 and 2012-08-10 17:14:22 is: Years: 0, Months: 0, Days: 2, Hours: 0, Minutes: 0, Seconds: 0

    Hope this helps!

      Yeah.. this is very helpful... Thanks for your efforts.

        You're most welcome, raja@1988!

Re^2: Time difference
by Anonymous Monk on Aug 10, 2012 at 18:12 UTC
    I am fond of Date::Calc::Object (an extension to the above, of course) which defines an object that corresponds to a date-value ... so a particular date becomes "a self-contained thing" which you can then "ask questions of." Sometimes this turns out to be a very handy metaphor that can also result in fewer scalar variables floating around . . . a little cleaner code, maybe.