$s = '20:00'; $d = 12; $e = time; $e += 60 until localtime( $e ) =~ m[$s:]; $start = $e; $end = $start + $d * 3600; printf "start:%f end:%f\n", $start, $end;; start:1479931244.206990 end:1479974444.206990