use Date::Calc qw( Add_Delta_DHMS Date_to_Days ); @date1 = (2002,8,31,23,59,1); @date2 = (2002,9,1,11,30,59); @d1 = ( Date_to_Days(@date1[0..2]), ($date1[3]*60+$date1[4])*60+$date1[5] ); @d2 = ( Date_to_Days(@date2[0..2]), ($date2[3]*60+$date2[4])*60+$date2[5] ); @diff = ( $d1[0]-$d2[0], $d1[1]-$d2[1] ); if ($diff[0] > 0 and $diff[1] < 0) { $diff[0]--; $diff[1] += 86400; } if ($diff[0] < 0 and $diff[1] > 0) { $diff[0]++; $diff[1] -= 86400; } if ($diff[0] > 0 || $diff[0] == 0 && $diff[1] >= 0) { ... }