Convert time in HH:MM:SS format to seconds only?



How to turn time in format HH:MM:SS into a flat seconds number?

P.S. Time could be sometimes in format MM:SS only.

Answer

No need to explode anything:

$str_time = "23:12:95";

$str_time = preg_replace("/^([d]{1,2}):([d]{2})$/", "00:$1:$2", $str_time);

sscanf($str_time, "%d:%d:%d", $hours, $minutes, $seconds);

$time_seconds = $hours * 3600 + $minutes * 60 + $seconds;

And if you don’t want to use regular expressions:

$str_time = "2:50";

sscanf($str_time, "%d:%d:%d", $hours, $minutes, $seconds);

$time_seconds = isset($seconds) ? $hours * 3600 + $minutes * 60 + $seconds : $hours * 60 + $minutes;


Source: stackoverflow