use DateTime::Duration; my $toTime = "1220"; my $fromTime = "0930"; my $to = DateTime::Duration->new( hours => substr($toTime,0,2), minutes => substr($toTime,2,2), ); printf "%02d%02d\n", $to->hours,$to->minutes; my $from = DateTime::Duration->new( hours => substr($fromTime,0,2), minutes => substr($fromTime,2,2), ); printf "%02d%02d\n", $from->hours,$from->minutes; $to->subtract_duration( $from ); # $to = $to - $from ; printf "%02d%02d\n", $to->hours,$to->minutes; print $to->hours, " hours and ", $to->minutes, " minutes\n"; use DateTime; $to = DateTime->now; $to->set(hour => substr($toTime,0,2) ); $to->set(minute => substr($toTime,2,2) ); print $to->strftime('%A, %B %d, %Y @ %H%M'),"\n"; print $to->subtract(hours => substr($fromTime,0,2) ) ->subtract(minutes => substr($fromTime,2,2) ) ->strftime('%A, %B %d, %Y @ %H%M'),"\n"; __END__ 1220 0930 0250 2 hours and 50 minutes Monday, September 08, 2003 @ 1220 Monday, September 08, 2003 @ 0250