Как получить разницу времени с микросекундами

MixMax

Guest
Как получить разницу времени с микросекундами

Добрый день.

Постановка задачи: есть два времени (любые для примера)

time01 = 1:25.226 (1 минута, 25 секунд и 226 тясячных)
time02 = 1:26.737

Задача: как вычесть из второго времени первое чтобы получить также с микросекундами
(ответ: 0:01.511)

есть ли для этого какие нибудь спец. функции, или просто разбирать время по кусочкам вроде: explode(":", $time01)
и потом отнимать минуты от минут, секунды от секунд, и т.д.?

Спасибо.
 

MixMax

Guest
microtime -- Возвращает метку времени с микросекундами

не подскажите каким образом с помощью microtime можно отнять одно время от другого? или переконвертировать это микросекунды в чтото другое для отнимания или сложения?

Если я не ошибаюсь функция просто возвращает тек. время с микросекундами

возможно я немного не дописал постановку. Время у меня уже дано, я его не засекаю, мне уже приходят эти данные. Мне нужно использовать именно их.
 

vovanium

Новичок
Переводишь всё в секунды с тысячными, т.е. 1:12.333 => 72.333, и с ней делаешь, что хочешь. Либо можно всё перевести в милисекунды.

P.S. это ты не результаты F1 собираешься обрабатывать случайно? :)

Вот тебе для примера:
PHP:
function time2float($str){
	if (!preg_match("/^(\d+:)?([0-5]?\d:)?[0-5]?\d(\.\d+)$/", $str)) return false;
	$ftime = 0;	$m = 1;
	$temp = explode(':', $str);
	for($i = count($temp) - 1; $i >= 0; $i--){
		$ftime += $temp[$i] * $m;
		$m *= 60;
	}
	return $ftime;
}

function float2time($ftime, $full = false){
	if (!is_float)  return false;
	$negative = $ftime > 0 ? '' : '-';
	$str = ''; 
	$ftime = abs($ftime);
	$temp = floor($ftime / 3600);
	$str .= $temp . ':';
	$ftime -= $temp * 3600;
	$temp = floor($ftime / 60);
	$str .= sprintf("%02d", $temp) . ':';
	$ftime -= $temp * 60;
	$str .= $ftime > 10 ? $ftime : '0' . $ftime;
	return $negative . ltrim($str, $full ? ':' : ':0');
}

$time1 = '1:25.226';
$time2 = '1:26.737';
echo float2time(time2float($time1) - time2float($time2));
echo "<BR>";
echo float2time(time2float($time1) - time2float($time2), true);
 

MixMax

Guest
Я тоже хотел написать чтото в этом роде, но перед этим спросил тут, может есть другие более традиционные решения.

Спасибо, принципе как раз то что нужно.

P.S. А функции действительно мне нужно для работы с результатами F1
 

Фанат

oncle terrible
Команда форума
гы.
задачка-то арифметической оказалась - на умножение и деление =)
кто-то, похоже, в школе плохо учился...
 
Сверху