Periscuelo 20 Denunciar post Postado Fevereiro 23, 2011 Tente assim amigo gremio. Array ( [0] => 10:55:20 [1] => 11:01:49 [2] => 10:58:18 [3] => 10:58:20 [4] => 16:21:40 [5] => 00:00:00 [6] => 16:35:53 [7] => 23:53:31 ) function diffHours($hourA, $hourB){ date_default_timezone_set('UTC'); return date('H:i:s',(strtotime($hourA)-strtotime($hourB))); } print_r($array); print_r(diffHours($array[1],$array[0])); print_r(diffHours($array[3],$array[2])); print_r(diffHours($array[5],$array[4])); print_r(diffHours($array[7],$array[6])); Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Fevereiro 23, 2011 Ta, funfo direitnho, mas para eu somar depois, seria só colocar o + no lugar do - ? Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Fevereiro 23, 2011 Isso ae amigo gremio :clap: :cake: Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Fevereiro 23, 2011 function diffHours($hourA, $hourB){ date_default_timezone_set('UTC'); return date('H:i:s',(strtotime($hourA)-strtotime($hourB))); } function soma($hourA, $hourB){ date_default_timezone_set('UTC'); return date('H:i:s',(strtotime($hourA)+strtotime($hourB))); } print_r($array); $a = diffHours($array[1],$array[0]); $b = diffHours($array[3],$array[2]); echo (soma($b,$a)); //imprime Array ( [0] => 10:55:20 [1] => 11:01:49 [2] => 10:58:18 [3] => 10:58:20 [4] => 16:21:40 [5] => 00:00:00 [6] => 16:35:53 ) 17:38:15 Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Fevereiro 23, 2011 Fiz os testes amigo gremio, e vi que para fazer os 2 ao mesmo tempo terá que fazer algumas modificações. function calcHour($hourA, $hourB){ return (strtotime($hourA)-strtotime($hourB)); } function diffHours($hour) { date_default_timezone_set('UTC'); return date('H:i:s',$hour); } function sumHours($hourA, $hourB){ date_default_timezone_set('UTC'); return date('H:i:s',($hourA+$hourB)); } //Para teste faça $a = calcHour(date('H:i:s'),'09:20:04'); $b = calcHour(date('H:i:s'),'10:20:04'); $c = diffHours($a); $d = diffHours($B); $e = sumHours($a,$B); echo $c.'<br />'.$d.'<br />'.$e; Veja que eu separei a função que faz o calculo das que mostram a soma e a diferença. Isto porque para somar é necessario que seja a diferença de cada hora em timestamp. Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Fevereiro 23, 2011 Cara, muito obrigado, obrigado pela paciencia... Show de bola. Abrção Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Fevereiro 23, 2011 Tranquilo amigo gremio, se não for exibir a diferença entre as horas você pode até eliminar a função diffHours pois com a calcHour e a sumHours você já consegue oque precisa. Veja como fica mais facil para você trabalhar. Para debugar e verificar se a soma esta certa diffHours ajuda. Não cheguei a testar mas por utilizar o timestamp, acredito que a soma só de certo até 23:59:59 horas. Caso a soma chegue a 24h eu imagino que o resultado seja 00:00:00. Se sua necessidade for uma soma maior que 23:59:59 aconselho a fazer os calculos via MySQL como sugeriu o amigo Kineri. Ex: -- -- Estrutura da tabela `times` -- CREATE TABLE IF NOT EXISTS `times` ( `id` int(11) NOT NULL AUTO_INCREMENT, `hora1` time NOT NULL, `hora2` time NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci ; -- -- Extraindo dados da tabela `times` -- INSERT INTO `times` (`id`, `hora1`, `hora2`) VALUES (1, '16:00:00', '10:00:00'), (2, '16:18:51', '09:25:15'); Apartir desta tabela de testes faça a seguinte query: SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(`hora1`,`hora2`)))) AS soma FROM times Desta forma é possível obter o mesmo resultado porém soma mais de 24hs. Abraços. Compartilhar este post Link para o post Compartilhar em outros sites