Привет, я пытаюсь преобразовать метку времени в секунды. В настоящее время отметка времени будет передаваться в двух формах и готовиться к любому. Однако я думаю, что я усложняю себе методы, которые я попробовал.
Так, например, вход
1 час 1 минута 1 секунда или же 2 часа 2 минуты 2 секунды <- для множественного числа
Я хочу, чтобы конечный результат был примером ниже, чтобы я мог затем преобразовать это число в несколько секунд:
1:01:01 или же 2:02:02
Я не знаю, в каком случае это будет, и это будет параметр, переданный через url, и вот что я пробовал до сих пор, но, как я уже сказал, он не отображается правильно:
$recent_time = htmlspecialchars($_GET["time"]);
$recent_time = preg_replace("/[^0-9,.]/", ":", $recent_time);
$recent_time = preg_replace("/(.)\\1+/", "$1", $recent_time);
echo $recent_time;
Итак, как вы можете видеть, я заменяю все буквы двоеточием и проверяю, что двоеточия не повторяются, поэтому вывод будет xx: xx: xx, однако иногда вывод не точен, вот как я бы перевел вывод в секунды:
$str_time = preg_replace("/^([\d]{1,2})\:([\d]{2})$/", "00:$1:$2", $recent_time);
sscanf($str_time, "%d:%d:%d", $hours, $minutes, $seconds);
$time_seconds = $hours * 3600 + $minutes * 60 + $seconds;
$sum_total = $time_seconds + $old_time;
Проблема в том, что если это только min + sec, это не переводит это в секунды должным образом. так, например, время составляет 10 минут 13 секунд, он будет выводить 10:13:
но он не преобразует его в секунды должным образом, потому что это не 00:10:13. Я пытался обрезать окончательный двоеточие, но он по-прежнему не может различить минуты / сек / часы
$recent_time = substr_replace($recent_time ,"",-1);
РЕДАКТИРОВАТЬ
$converted_time = date('H:i:s',strtotime('$recent_time', strtotime('midnight')));
используйте вместо этого функцию php strtotime
date('H:i:s',strtotime('1 hour 1 minute 1 second', strtotime('midnight'))); // 01:01:01
date('H:i:s',strtotime('2 hours 2 minutes 2 seconds', strtotime('midnight'))); // 02:02:02
date('H:i:s',strtotime('10 minutes 13 seconds', strtotime('midnight'))); // 00:10:13
Других решений пока нет …