PHP: <?php /* Синтаксис : функции mktime int mktime([int hour] [,int minute] [,int second] [,int month] [,int day] [,int year] [, int is_dst]); Возвращает временную метку Unix согласно данным аргументам. Эта временная метка является целым числом, равным количеству секунд между эпохой Unix (1 Января 1970) и указанным временем. Все парамеры это функции необязательны, но пропускать их можно только справо налево. Если какие-то параметры не заданы, на их место подставляются значения, соответствующие текущей дате. Аргумент is_dst, указывает, осуществлен ли переход на летнее время (1) или нет (0); если не известно, то аргумент - (-1) Функция возвращает timestamp, соответствующий указанной дате. Правильность даты, переданной в параметрах, не проверяется. В случае некорректной даты ничего особенного не происходит - функция "делает вид", что ее не касается, и формирует соответствующий timestamp. */ //преобразование времени $time1 = '15:20:45'; $time2 = '17:20:45'; eval(' $r_time1 = mktime('.str_replace(':',',',$time1).'); $r_time2 = mktime('.str_replace(':',',',$time2).'); '); $result_time = floor(($r_time1 - $r_time2)/60); if ($result_time<0) { $result_time+=60*24; } print $result_time;
думаю тут надо догадаться что str_replace(':',',',$time1) внутри eval введен только по причине того что исходные данные в виде строки однако в реальности они получаются через нормальные переменные и должны вставляться как аргументы функции mktime напрямую
Alex_pac Оригинал! На самом деле все решается функцией strtotime PHP: <? echo floor((strtotime('17:10:15') - strtotime('15:20:45')) / 60);
вот тут не логично - нельзя от 15 часов отнять 17, потому что время без указания числа - в пределах суток. А если делать например так да то с чего берем, что именно 24? Может, эти 15:20:45 были двое суток назад? =) Пишите число, либо считайте только в пределах одних суток, чтобы не возникали несостыковки.
Вот еще подсказали. PHP: <?php $begin = "13:01:45"; $end = "15:25:12"; list($bhour, $bminute, $bsecond) = explode(":", $begin); list($ehour, $eminute, $esecond) = explode(":", $end); $bseconds = $bhour * 3600 + $bminute * 60 + $bsecond; $eseconds = $ehour * 3600 + $eminute * 60+ $esecond; $minutes =abs (($eseconds - $bseconds) / 60); echo $minutes; ?>