http://www.perlmonks.org?node_id=647540


in reply to Finding time difference from two strings

This will do the trick:

(Note that I changed one of your time strings because a day name didn't agree with the other)

Update: You'll still need to wrap into a loop such as what graff did, but you can throw mine into a sub with two time strings as parameters, and have it return the elapsed time between them.

#!/perl/bin/perl -w use strict; use Time::Local; my %months = ( Jan => 1, Feb => 2, Mar => 3, Apr => 4, May => 5, Jun => 6, Jul => 7, Aug => 8, Sep => 9, Oct => 10, Nov => 11, Dec => 12 ); my $beginning = 'Fri Oct 26 05:54:09 2007'; my $end = 'Fri Oct 26 06:54:09 2007'; my @b = split(/[:\s]/, $beginning); my @e = split(/[:\s]/, $end); my $b = timelocal($b[5], $b[4], $b[3], $b[2], $months{$b[1]}-1, $b[-1] +); my $e = timelocal($e[5], $e[4], $e[3], $e[2], $months{$e[1]}-1, $e[-1] +); #my @new = localtime($b); #printf "%04d%02d%02d\n", $new[5]+1900, $new[4]+1, $new[3]; my $elapsed = $e - $b; print qq($elapsed seconds elapsed between the two events.\n); __OUTPUT__ 3600 seconds elapsed between the two events.

Where do you want *them* to go today?