Я думаю, самый простой метод будет использовать strtotime()
функцию:
$time = '21:30:10';
$seconds = strtotime("1970-01-01 $time UTC");
echo $seconds;
// same with objects (for php5.3+)
$time = '21:30:10';
$dt = new DateTime("1970-01-01 $time", new DateTimeZone('UTC'));
$seconds = (int)$dt->getTimestamp();
echo $seconds;
демо
Функция date_parse()
также может использоваться для анализа даты и времени:
$time = '21:30:10';
$parsed = date_parse($time);
$seconds = $parsed['hour'] * 3600 + $parsed['minute'] * 60 + $parsed['second'];
демо
Если вы проанализируете формат MM:SS
с помощью strtotime()
или date_parse()
, произойдет сбой (date_parse()
используется в strtotime()
и DateTime
), потому что при вводе формата, подобного xx:yy
, синтаксический анализатор предполагает это это HH:MM
, а не MM:SS
. Я бы предложил проверить формат и добавить 00:
, если у вас есть только MM:SS
.
демо strtotime()
демо date_parse()
Если у вас больше 24 часов, вы можете использовать следующую функцию (она будет работать для форматов MM:SS
и HH:MM:SS
):
function TimeToSec($time) {
$sec = 0;
foreach (array_reverse(explode(':', $time)) as $k => $v) $sec += pow(60, $k) * $v;
return $sec;
}
демо