Walbert Costa Postado Outubro 11, 2011 Denunciar Share Postado Outubro 11, 2011 Olá Pessoal,Sou novo em PHP e me deparo com o seguinte problema:Tenho um form onde o usuário entra com 2 dados de horas.Hora inicial: Aqui ele vai colocar 8:30Hora final: Aqui ele vai colocar 18:36Quero que o resultado apareça para ele com a diferença entre esses 2 horários.Vou ter 3 variaveis:horaini: 8:30;horafim: 18:36;diferenca_horas: "aqui virá o resultado em horas e minutos"alguém pode me ajudar nisso?Vi vários exemplos na rede mas não consigo adaptar para meu caso!Muito obrigado! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 dennernavarro Postado Outubro 11, 2011 Denunciar Share Postado Outubro 11, 2011 $horaini = $_POST['inicio'];$horafim = $_POST['fim'];$diferenca_horas = ($horafim - $horaini );echo $diferenca_horas;ve se funciona assim..ah.. antes desse codigo, você tem que criar um formulário assim..<html><head><title>Nome do document</title></head><body><form name="form1" method="post" action="enviar.php"> <p>Hora inicial <input name="inicio" type="text" id="inicio"> </p> <p>Hora final <input name="fim" type="text" id="fim"></p> <p> <input type="submit" name="Submit" value="ok"> </p></form></body></html> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Walbert Costa Postado Outubro 11, 2011 Autor Denunciar Share Postado Outubro 11, 2011 Oi Denner,Não é bem isso que quero!Eu já tenho o form e já foi configurado para os campos:$horaini: tipo texto (onde está orientado para o usuário entrar com o dado assim: 00:00)$horafim: tipo texto (onde está orientado para o usuário entrar com o dado assim: 00:00)O que eu quero que o resultado venha em $diferenca_horas já com o resultado correto. Exempo: $horaini: 08:30$horafim: 14:00O resultado terá que ser: 05:30Agradeço sua ajuda! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Weuller Krysthian Postado Outubro 12, 2011 Denunciar Share Postado Outubro 12, 2011 Ai, fiz essa função pra você aqui, com um exemplo de como funciona, ta bem comentado mas qualquer coisa só falar:<?php function difDeHoras($hIni, $hFinal) { // Separa á hora dos minutos $hIni = explode(':', $hIni); $hFinal = explode(':', $hFinal); // Converte a hora e minuto para segundos $hIni = (60 * 60 * $hIni[0]) + (60 * $hIni[1]); $hFinal = (60 * 60 * $hFinal[0]) + (60 * $hFinal[1]); // Verifica se a hora final é maior que a inicial if(!($hIni < $hFinal)) { return false; } // Calcula diferença de horas $difDeHora = $hFinal - $hIni; //Converte os segundos para Hora e Minuto $tempo = $difDeHora / (60 * 60); $tempo = explode('.', $tempo); // Aqui divide o restante da hora, pois se não for inteiro, retornará um decimal, o minuto, será o valor depois do ponto. $hora = $tempo[0]; @$minutos = (float) (0) . '.' . $tempo[1]; // Aqui forçamos a conversão para float, para não ter erro. $minutos = $minutos * 60; // Aqui multiplicamos o valor que sobra que é menor que 1, por 60, assim ele retornará o minuto corretamente, entre 0 á 59 minutos. $minutos = explode('.', $minutos); // Aqui damos explode para retornar somente o valor inteiro do minuto. O que sobra será os segundos $minutos = $minutos[0]; //Aqui faz uma verificação, para retornar corretamente as horas, mas se não quiser, só mandar retornar a variavel hora e minutos if (!(isset($tempo[1]))) { if($hora == 1){ return 'A diferença é de ' . $hora . ' Hora.'; } else { return 'A diferença é de ' . $hora . ' Horas.'; } } else { if($hora == 1){ if($minutos == 1){ return 'A diferença é de ' . $hora . ' Hora e ' .$minutos . ' Minuto.'; } else { return 'A diferença é de ' . $hora . ' Hora e ' .$minutos . ' Minutos.'; } } else { if($minutos == 1){ return 'A diferença é de ' . $hora . ' Horas e ' .$minutos . ' Minuto.'; } else { return 'A diferença é de ' . $hora . ' Horas e ' .$minutos . ' Minutos.'; } } } } ?> <form name="formHora" method="post" action=""> <label for="hInicial">Hora Inicial:</label> <input type="text" name="hInicial" id="hInicial"> <br /><br /> <label for="hFinal">Hora Final:</label> <input type="text" name="hFinal" id="hFinal"> <br /><br /> <input type="submit" name="submit" id="submit" value="Submit"> </form> <?php if (isset($_POST['submit'])) { print difDeHoras($_POST['hInicial'], $_POST['hFinal']); } ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Walbert Costa Postado Outubro 13, 2011 Autor Denunciar Share Postado Outubro 13, 2011 Oi Weuller,Em primeiro lugar, muito, muito, muito obrigado mesmo!!!Ainda estou com problemas pois não sei como utilizar essa função.Tentei de tudo aqui em localhost e nada.Depois de sua função eu fiz isso e não vem a resposta correta:$hIni = "08:30"$hFinal = "08:35"echo difDeHoras($hIni, $hFinal);ou isso:echo difDeHoras("08:36", "09:32");Também não vem nada!A resposta que vem para os dois códigos é:966Troquei os nomes das minhas variaveis para $hIni e $hFinal (na ordem: o primeiro para a hora inicial e o segundo para a hora final e instruções para o usuário digitar a hora no formato: 00:00Agora: Como eu faço para chamar corretamente a função para que o resultado correto seja impresso?Abraços,Walbertcontato@byjoomla.com.br Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Walbert Costa Postado Outubro 17, 2011 Autor Denunciar Share Postado Outubro 17, 2011 Muito obrigado Denner!!!Post RESOLVIDO! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Walbert Costa
Olá Pessoal,
Sou novo em PHP e me deparo com o seguinte problema:
Tenho um form onde o usuário entra com 2 dados de horas.
Hora inicial: Aqui ele vai colocar 8:30
Hora final: Aqui ele vai colocar 18:36
Quero que o resultado apareça para ele com a diferença entre esses 2 horários.
Vou ter 3 variaveis:
horaini: 8:30;
horafim: 18:36;
diferenca_horas: "aqui virá o resultado em horas e minutos"
alguém pode me ajudar nisso?
Vi vários exemplos na rede mas não consigo adaptar para meu caso!
Muito obrigado!
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.