Я думаю, что самым простым методом было бы использовать функцию 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
.
demo strtotime()
demo 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;
}