
Walbert Costa
Membros-
Total de itens
12 -
Registro em
-
Última visita
Tudo que Walbert Costa postou
-
Agradeço a vocês: Durub e MTavares! Muito obrigado!!! Vou tentar e dou um retorno! Abs, Walbert
-
(Resolvido) Transformar horas em minutos
pergunta respondeu ao Walbert Costa de Walbert Costa em PHP
POST RESOLVIDO Os 2 funcionaram direitinho!!! Muito obrigado a vocês!!! Abs, Walbert -
De um cálculo de tempo decorrido que faço recebo o resultado em horas, assim: $resultado_em_horas = 14:23 horas O que eu quero é pegar esse mesmo (14:23) resultado e transformá-lo em minutos e mostrar na variável $resultado_em_minutos , assim: $resultado_em_minutos = xxxx minutos Alguém poderia me ajudar?
-
Para explicar tudo melhor estou enviando uma tela com o form de entrada e com os resultados abaixo de retorno para que entenda melhor: O código abaixo retorno a imagem acima: ESSE É O CÓDIGO QUE RETORNA A TELA QUE ENVIEI: //Mostra o total de cigarros $totalcigarros = $cigarros; 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 'Você esse total fuma em um intervalo de ' . $hora . ' Hora.'; } else { return 'Você fuma esse total em um intervalo de ' . $hora . ' Horas.'; } } else { if($hora == 1){ if($minutos == 1){ return 'Você esse total fuma em um intervalo de ' . $hora . ' Hora e ' .$minutos . ' Minuto.'; } else { return 'Você fuma esse total em um intervalo de ' . $hora . ' Hora e ' .$minutos . ' Minutos.'; } } else { if($minutos == 1){ return 'Você fuma esse total em um intervalo de ' . $hora . ' Horas e ' .$minutos . ' Minuto.'; } else { return 'Você fuma esse total em um intervalo de ' . $hora . ' Horas e ' .$minutos . ' Minutos.'; } } } } //Retorna a função acima $diferencatempo = difDeHoras($inicial, $fim); /*O que eu quero agora é o resultado para $intervalo, mas primeiro tenho que extrair do resultado da função acima (que vem assim: Você fuma esse total em um intervalo de 14 Horas e 34 Minutos, ela vem para a variavel: $diferencatempo.) o número total em minutos para aí sim, pegar esse valor e dividir por 16, me retornando o tão esperado $intervalo :: Tá aí o meu problema! Observação: A classificação das variáveis são: ($cigarros = Number), ($inicial = Texto) e ($fim = Texto) Resumindo: O que quero é o resultado para $intervalo que será: $intervalo = ($diferencatempo / $totalcigarros); */
-
Oi Moderador Durub, Em primeiro lugar, muito obrigado pela sua ajuda!!! Fiz e não deu certo, está vindo resposta "0". Abaixo colo o código para você olhar. O problema é que na resposta da primeira função a resposta vem assim: Você fuma esse total em um intervalo de 14 Horas e 46 Minutos. Aí eu quero que esse resultado seja o valor de (14 x 60 + 46) para transformar tudo em minutos e, então, usar a variavel de numero inteiro que tenho e dividir o total do intervalo em minutos por essa variavel inteira para retornar Qual o período em minutos que a pessoa fuma cada cigarro. Se eu conseguir somente extrair o total de minutos da resposta: "Você fuma esse total em um intervalo de 14 Horas e 46 Minutos." o meu problema estará resolvido por o resto serão operações básicas e eu consigo fazer! De novo, muito obrigado pela sua ajuda!!! Aguardo qualquer ajuda que possa me dar para resolver o problema acima! ----------------CÓPIA DO CÓDIGO--------------------------------- //Mostra o total de cigarros $totalcigarros = $cigarros; 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 'Você esse total fuma em um intervalo de ' . $hora . ' Hora.'; } else { return 'Você fuma esse total em um intervalo de ' . $hora . ' Horas.'; } } else { if($hora == 1){ if($minutos == 1){ return 'Você esse total fuma em um intervalo de ' . $hora . ' Hora e ' .$minutos . ' Minuto.'; } else { return 'Você fuma esse total em um intervalo de ' . $hora . ' Hora e ' .$minutos . ' Minutos.'; } } else { if($minutos == 1){ return 'Você fuma esse total em um intervalo de ' . $hora . ' Horas e ' .$minutos . ' Minuto.'; } else { return 'Você fuma esse total em um intervalo de ' . $hora . ' Horas e ' .$minutos . ' Minutos.'; } } } } $diferencatempo = difDeHoras($inicial, $fim); //Divisão do número de cigarros pelo tempo decorrido function totalMinutos($hora) { $componentes = explode(":", $hora); /* separa em uma array da forma array(horas, minutos) */ return $componentes[0] * 60 + $componentes[1]; /* multiplica as horas por 60 e soma os minutos para obter o total */ } $intervalo = totalMinutos($diferencatempo);
-
Olá, tudo bem? Estou com uma dúvida simples no código abaixo e não consigo resolver. A função abaixo me retorna o que eu quero: a diferença entre duas variaveis de horas ($inicial, $fim). Seu colocar, por exemplo: $inicial = 9:30 e $fim = 13:45 retorno o seguinte resultado é: O intervalo é de: 4 Horas e 15 Minutos. O que eu quero agora, e não consigo é: Pegar esse intevalo e transformar em minutos para aparecer na variavel $difminutos. Preciso dessa variável em minutos fora de função para continuar com outros cálculos. Pode me ajudar? //A função que retorna a diferença entre hora inicial e hora final 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 'Você esse total fuma em um intervalo de ' . $hora . ' Hora.'; } else { return 'Você fuma esse total em um intervalo de ' . $hora . ' Horas.'; } } else { if($hora == 1){ if($minutos == 1){ return 'Você esse total fuma em um intervalo de ' . $hora . ' Hora e ' .$minutos . ' Minuto.'; } else { return 'Você fuma esse total em um intervalo de ' . $hora . ' Hora e ' .$minutos . ' Minutos.'; } } else { if($minutos == 1){ return 'Você fuma esse total em um intervalo de ' . $hora . ' Horas e ' .$minutos . ' Minuto.'; } else { return 'Você fuma esse total em um intervalo de ' . $hora . ' Horas e ' .$minutos . ' Minutos.'; } } } } //Essa operação me retorna a diferença entre hora inicial e hora final $diferencatempo = difDeHoras($inicial, $fim); //Isso é que eu quero, a diferença acima que vem em horas : minutos, apenas em minutos (O TOTAL EM MINUTOS) $difminutos = ?
-
Oi Pessoal, Complementando meu post eu só quero do código acima o que está abaixo: O que eu quero é pegar a variável $hora dentro da função, multiplicar por 60, somar com a variavel $minutos e dividir a soma das 2 variaveis por uma outra variavel de numero inteiro. Por exemplo: a resposta da função dará 2 horas e 30 minutos e minha variavel de numero inteiro será 10. Então eu quero é multiplicar 2 horas por 60 e somar com 30 minutos e dividir por 10 o resultado dará : 15 para esse exemplo.
-
Olá Pessoal, Estou fazendo uma aplicação em uma IDE de PHP e tenho que verificar a diferença entre dois horários do mesmo dia. O código abaixo faz tudo isso. Ele me dá a resposta correta para o problema! O que eu quero agora é dividir o resultado que obtenho da diferença das horas por um núemro inteiro. Explicando: No código abaixo se eu colocar a hora inicial como: 08:15 e a hora final como: 15:23 ele me retornará como resultado do intervalo o valor de 7 horas e 7 minutos. O que eu quero agora é pegar o resultado (7 horas e 7 minutos) e dividir por um número inteiro. Por exemplo dividir por 8. Alguém poderia me ajudar a complementar o código? Se possível com comentário? As variáveis são: Para o número inteiro é: $numero Para o resultado é: $intervalo Agradeço muito a ajuda e muito obrigado a todos do fórum! -------------------------INICIO DO CÓDIGO----------------------------------------- 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 'intervalo de ' . $hora . ' Hora.'; } else { return 'intervalo de ' . $hora . ' Horas.'; } } else { if($hora == 1){ if($minutos == 1){ return 'intervalo de ' . $hora . ' Hora e ' .$minutos . ' Minuto.'; } else { return 'intervalo de ' . $hora . ' Hora e ' .$minutos . ' Minutos.'; } } else { if($minutos == 1){ return 'intervalo de ' . $hora . ' Horas e ' .$minutos . ' Minuto.'; } else { return 'intervalo de ' . $hora . ' Horas e ' .$minutos . ' Minutos.'; } } } } $diferencatempo = difDeHoras($inicial, $fim); -------------------------FIM DO CÓDIGO-----------------------------------------
-
Muito obrigado Denner!!! Post RESOLVIDO!
-
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 é: 9 6 6 Troquei 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:00 Agora: Como eu faço para chamar corretamente a função para que o resultado correto seja impresso? Abraços, Walbert contato@byjoomla.com.br
-
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:00 O resultado terá que ser: 05:30 Agradeço sua ajuda!
-
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!