use strict; use warnings; use Date::Manip; my @dateObject; push @dateObject, ParseDateString('1/12/2010 10:44:49 AM'); push @dateObject, ParseDateString('1/12/2010 10:44:59 AM'); print "Delta is " . interval_to_sec(DateCalc(@dateObject)) . " seconds\n"; # parse interval string and yield seconds sub interval_to_sec { my ($intv) = @_; my ($sec) = 0; my $sign = ($intv =~ /^-/) ? -1 : 1; my @f = reverse(split(/:/, $intv)); # use just 5 least significant fields $sec = $f[0]; $sec += $f[1] * 60; $sec += $f[2] * 3600; $sec += $f[3] * 86400; $sec += $f[4] * 604800; # 7 days $sec += $f[5] * 2629800; # 30.4 days (365.25 / 12) $sec += $f[6] * 31557600; # 365.25 days (Julian year) return $sign * $sec; }