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
$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)
Question
Walbert Costa
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 = ?
Link to comment
Share on other sites
7 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.