gremio10 14 Denunciar post Postado Fevereiro 22, 2011 Fala galera, estou com uma duvida, como faço para descobrir qual a diferença entre 2 pares de datas, e depois somar essas duas diferenças ? exemplo: hora 1 : 09:00:00, hora 2: 13:00:00, hora 3: 14:00:00, hora 4: 18:00:00 entre hora 1 e hora 2 tem 4:00:00, entre hora 3 e hora 4 tem outras 4 horas, somando-as dá : 8:00:00... Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
André Severino 3 Denunciar post Postado Fevereiro 22, 2011 Seria assim? :thumbsup: $hora1 = 9; $hora2 = 13; $res_1 = $hora1 - $hora2; Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Fevereiro 22, 2011 pesquisando.. http://forum.imasters.com.br/topic/423767-calculo-de-horas-restantes-para-uma-determinada-data/page__view__findpost__p__1671761 http://forum.imasters.com.br/topic/373924-calcular-diferenca-entre-horas/page__view__findpost__p__1441496 Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Fevereiro 22, 2011 tbm, só que seria necessario tbm ter os minutos e segundos, sabe, foi só um exemplo com os :00:00 :D mas vlws Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Fevereiro 22, 2011 function diffHours($hourB, $hourS, $type=''){ $time1 = explode(':', $hourB); $time2 = explode(':', $hourS); switch ($type) { case 'hours': $Q = 3600; break; case 'minutes': $Q = 60; break; default: $Q = 1; } return floor(((mktime($time1[0],$time1[1],$time1[2],0,0,0)-mktime($time2[0],$time2[1],$time2[2],0,0,0))/$Q)); } Basicamente a mesma coisa da função de diferença de datas porém agora com horas. Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Fevereiro 22, 2011 <?php $nova_dt = '7'; // + sete dias apos hoje echo "Hoje é: " . date("d/m/Y") . "<br>"; $proxima_data = mktime(0, 0, 0, date("m"),date("d") + $nova_dt, date("Y")); echo "Daqui $nova_dt dias será: " . date("d/m/Y",$proxima_data); $data = date("d/m/Y"); ?> Compartilhar este post Link para o post Compartilhar em outros sites
welitonjose 1 Denunciar post Postado Fevereiro 22, 2011 olha eu faria assim expero ter ajudados // DIFERENCAO DE HORAS $HoraEntrada = 09:00:00; $HoraSaida = 13:00:00; //SUBTRAINDO HORAS $QtdHoras = substr($HoraSaida,0,2)-substr($HoraEntrada,0,2);//TEMOS 13-09 = 4; //CASO HAVER SEGUNDOS $QtdMinutos = substr($HoraSaida,3,5)-substr($HoraEntrada,3,5); $TotalManha = ($QtdHoras*60)+$QtdMinutos; //MESMO PROCESSO PARA TARDE $TotalDia = ($TotalManha+$TotalTarde)/60; //VERIFICA SE TEM VIRGULA E APRICA A REGRA DE 3 $NTotalDia = (explode(",",$TotalDia)*0.6)/100; Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Fevereiro 22, 2011 Caras, todos os exemplos são ótimos, só que o problema seria assim: eu hoje, cadastro a data, e hora de quando a pessoa se logou. no final do dia, teria de ter as horas em que ela trabalhou, sabe ? tipo, entrei as 9:10, mei intervalo foi as 12:10 e voltei as 13:03 e sai as 18:07, queria saber as horas trabalhadas... Compartilhar este post Link para o post Compartilhar em outros sites
Leozitho 81 Denunciar post Postado Fevereiro 22, 2011 Você pode utilizar as classes DateTime e DateInterval. Compartilhar este post Link para o post Compartilhar em outros sites
welitonjose 1 Denunciar post Postado Fevereiro 22, 2011 finalizando meu codigo //VERIFICA SE TEM VIRGULA E APRICA A REGRA DE 3 $NTotalDia = explode(",",$TotalDia); $TotalMinutos = ($NTotalDia[1]*0.6)/100; echo "O funcionário trabalhou ".$NTotalDia[0]."horas e ".$TotalMinutos."Minutos"; Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Fevereiro 22, 2011 Esta ficou mais fácil ainda amigo gremio function diffHours($hourA, $hourB){ date_default_timezone_set('UTC'); return date('H:i:s',(strtotime($hourA)-strtotime($hourB))); } echo diffHours(date('H:i:s'),'12:52:04'); A função pega a diferença mas nada impede de você utiliza-la adaptando as suas necessidades. Até porque ela também pode somar as horas ;) Caso queira entender melhor o UTC: Tempo Universal Coordenado Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
Kineri 0 Denunciar post Postado Fevereiro 23, 2011 Suas datas vêm do banco de dados? Tente usar as funções nativas do MySQL para os cálculos com data e hora. Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Fevereiro 23, 2011 As datas e horas vem do banco, só que de campos diferentes, ou seja, date = data e time = hora... não consegui com nenhum código que os amigos me indicaram, quando o valor é quebrado, ele entra en loop de numeros... Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Kineri 0 Denunciar post Postado Fevereiro 23, 2011 Fiz umas experiências com operações com datas, veja se te ajuda: http://dl.dropbox.com/u/5490845/datas.rar Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Fevereiro 23, 2011 Você fez com relações a datas, mas eu precisaria entre horas, de um mesmo dia, entende ?! Compartilhar este post Link para o post Compartilhar em outros sites
Siriusred 0 Denunciar post Postado Fevereiro 23, 2011 Eu concordo com esse... você pode simplismente fazer assim... usuário logou: registra hora, usuario deslogou: registra hora... vamos supor que isso aconteceu 4 vezes... você vai pegar o total de resultados registrados... e somar... exemplo... Lembrando q isso seria feito com update, ok? não insert... aí você insere a data de hoje e só faz os updates do que acontecer no dia... isso aki é algo fixo, a n ser q você queira algo mais dinamico, n vai rolar... $minha_query = "PEGAR TUDO DO ID DESSE USUARIO NA DATA DE HOJE".... $total_resultados = mysql_fetch_array($minha_query); $total = ($data1 - $data2) + ($data3 - $data4); } Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Fevereiro 23, 2011 Amigo gremio, não entendi qual foi o erro que ocorreu com a função que lhe mostrei no post 11. Ela não da a diferença exata?? :huh: O Exemplo que dei foi com hora quebrada. Poste o erro pois aqui funcionou perfeitamente. Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Fevereiro 23, 2011 Seguinte : meu array de horários: 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 ) print_r($array); print_r(diffHours($array[0],$array[1],"minutes")); // imprimiu -7 Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Fevereiro 23, 2011 Amigo gremio, eu disse post 11 e ainda coloquei um link pra você visualizar o post 11. A função que lhe mostrei no post 11 não tem 3 parametros e não vai retornar -7. Você se quer leu o post ou testou a função ..... <_< Também é óbvio que se o calculo é entre duas horas (horaA e horaB) se você analisar a função vai perceber que tem de haver uma ordem dos parâmetros. Primeiro passa-se a hora maior e depois a hora menor a menos que queira desenvolver uma rotina que descubra qual das horas é a maior para fazer o calculo. Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Fevereiro 23, 2011 Bom... 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 ) 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[0],$array[1])); agora não entendi... Compartilhar este post Link para o post Compartilhar em outros sites