snra_perl has asked for the wisdom of the Perl Monks concerning the following question:
my (@d_in_m) = ( 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ); my $t1 = "2009-04-12 23:59:55 PM"; my $t2 = "2009-03-30 00:00:02 PM"; my @date1 = split( /-| |:/, $t1 ); my @date2 = split( /-| |:/, $t2 ); my $delta_sec = 0; sub month_delta { my ( $from_month, $to_month, $from_year, $to_year ) = @_; my $delta = 0; if ( ( $to_year > $from_year ) && ( $to_month > $from_month ) ) { $delta += ( $to_year - $from_year ) * 31536000; } for ( my $i = ( ( $from_month + 1 ) > 12 ) ? 1 : ( $from_month + 1 ) + ; $i < $to_month ; $i++ ) { $delta += ( $d_in_m[$i] * 86400 ); } return $delta; } my ( $date1_ref, $date2_ref ) = ( \@date1, \@date2 ); if(($date2[0]<= $date1[0]) && ($date2[1]< $date1[1]) ){ print "swapping the date \n"; ($date1_ref, $date2_ref) = ($date2_ref, $date1_ref); } if ( $date2_ref->[0] . $date2_ref->[1] eq $date1_ref->[0] . $date1_ +ref->[1] ) { $delta_sec = $date2_ref->[5] - $date1_ref->[5]; $delta_sec += ( $date2_ref->[4] - $date1_ref->[4] ) * 60; $delta_sec += ( $date2_ref->[3] - $date1_ref->[3] ) * 3600; $delta_sec += ( $date2_ref->[2] - $date1_ref->[2] ) * 86400; } elsif ( $date1_ref->[2] <= $d_in_m[ $date1_ref->[1] ] ) { $delta_sec = $date2_ref->[5] - $date1_ref->[5]; $delta_sec += ( $date2_ref->[4] - $date1_ref->[4] ) * 60; $delta_sec += ( $date2_ref->[3] - $date1_ref->[3] ) * 3600; $delta_sec += ( $date2_ref->[2] ) * 86400; $delta_sec += ( $d_in_m[ $date1_ref->[1] ] - $date1_ref->[2] ) * 86400 + month_delta( $date1_ref->[1], $date2_ref->[1], $date1_ref->[0], $date2_ref->[0] ); } else { print "Seems to be a invalid comparison delta b/w $t1 and $t2\ +n"; } print "!!!! Delta b/w $t1 and $t2 is " . $delta_sec . "\n";
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Code to calculate Delta b/w two dates in seconds
by Sewi (Friar) on Sep 22, 2009 at 20:52 UTC | |
by snra_perl (Acolyte) on Sep 22, 2009 at 22:26 UTC | |
|
Re: Code to calculate Delta b/w two dates in seconds
by moritz (Cardinal) on Sep 22, 2009 at 20:23 UTC | |
|
Re: Code to calculate Delta b/w two dates in seconds
by vitoco (Hermit) on Sep 22, 2009 at 21:52 UTC |