use Time::Local; sub String2Time { $_[0] =~ /^(\d{4})\-(\d{2})\-(\d{2}) (\d{2})\:(\d{2})\:(\d{2})/ or die "Invalid format: $_[0]"; return timelocal($6,$5,$4,$3,($2 - 1),($1 - 1900)); } my $t1 = "2009-04-12 23:59:55 PM"; my $t2 = "2009-03-30 00:00:02 PM"; print &String2Time($t1) - &String2Time($t2);