Jump to content
Fórum Script Brasil
  • 0

Intervalo de horas por número inteiro


Walbert Costa

Question

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-----------------------------------------

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...