Walbert Costa Posted October 11, 2011 Report Share Posted October 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! Quote Link to comment Share on other sites More sharing options...
0 dennernavarro Posted October 11, 2011 Report Share Posted October 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> Quote Link to comment Share on other sites More sharing options...
0 Walbert Costa Posted October 11, 2011 Author Report Share Posted October 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! Quote Link to comment Share on other sites More sharing options...
0 Weuller Krysthian Posted October 12, 2011 Report Share Posted October 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']); } ?> Quote Link to comment Share on other sites More sharing options...
0 Walbert Costa Posted October 13, 2011 Author Report Share Posted October 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 Quote Link to comment Share on other sites More sharing options...
0 Walbert Costa Posted October 17, 2011 Author Report Share Posted October 17, 2011 Muito obrigado Denner!!!Post RESOLVIDO! Quote Link to comment Share on other sites More sharing options...
Question
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 to comment
Share on other sites
5 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.