Ir para conteúdo
Fórum Script Brasil
  • 0

Intervalo de horas por número inteiro


Walbert Costa

Pergunta

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 para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...