|
|
|
||||||||||||||||||||||
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Parceiros - CSS para Web Design - S.O.S Designers - Slackware-Brasil - Crie seu Web site - Oficina da Net |
Função em PHP para o cálculo de minutos transcorridos em duas horas dadasFunção que nos permite averiguar as horas ou minutos entre dois tempos dados de um mesmo dia. Trata-se de uma função que nos permite obter o total de Minutos ou Horas transcorridas entre dois Tempos de um mesmo dia.
Algo como: Hora 1= 13:56 Hora 2=18:07 A função Imprime: Transcorreram 04:11 Horas. O processo é muito simples, vejamos o código fonte: <? function calcular_tempo_trasnc($hora1,$hora2){ $separar[1]=explode(':',$hora1); $separar[2]=explode(':',$hora2); $total_minutos_trasncorridos[1] = ($separar[1][0]*60)+$separar[1][1]; $total_minutos_trasncorridos[2] = ($separar[2][0]*60)+$separar[2][1]; $total_minutos_trasncorridos = $total_minutos_trasncorridos[1]-$total_minutos_trasncorridos[2]; if($total_minutos_trasncorridos<=59) return($total_minutos_trasncorridos.' Minutos'); elseif($total_minutos_trasncorridos>59){ $HORA_TRANSCORRIDA = round($total_minutos_trasncorridos/60); if($HORA_TRANSCORRIDA<=9) $HORA_TRANSCORRIDA='0'.$HORA_TRANSCORRIDA; $MINUTOS_TRANSCORRIDOS = $total_minutos_trasncorridos%60; if($MINUTOS_TRANSCORRIDOS<=9) $MINUTOS_TRANSCORRIDOS='0'.$MINUTOS_TRANSCORRIDOS; return ($HORA_TRANSCORRIDA.':'.$MINUTOS_TRANSCORRIDOS.' Horas'); } } //chamamos a função e imprimimos echo calcular_tempo_trasnc(date('H:i'),'16:12'); ?> Explicando: Primeiro, definiremos uma função para não repetir o mesmo código em todas as partes onde o utilizaremos, De nome calcular_tempo_trasnc($hora1,$hora2); Onde: $hora1 é a hora maior desde onde se calculará; no exemplo anterior seria 18:07, E $hora2 é o ponto desde onde se calculará as horas e minutos transcorridos. Cabe destacar que ambas horas devem estar no seguinte formato: ( H: i) . Como já sabemos "H" é a hora de 00 a 23 e "i", os minutos de 00 a 59 parâmetros definidos para a função date(); Logo, atribuímos valor às matrizes $separar[1] e $separar[2] respectivamente com o resultado devolvido pela função explode(); encarregada de separar uma cadeia a partir de um valor, neste caso será : (dois pontos) devolvendo uma nova matriz com duas partes, onde: $separar[1][0] <= É a hora de $hora1. Se o valor de $hora1 for igual a (11:15), então $separar[1][0] é igual a "11"; E $separar[1][1] <= Os minutos de $hora 1, igual a 15. Onde o primeiro [1], é o Key ou a chave de $separar, e correspondente à $hora1, se fosse 2, seria a $hora2. E até ali porque só estão definidos 2 parâmetros. Passaremos os valores de $separar[1][0] e $separar[2][0] respectivamente de horas a minutos ( Multiplicando esse valor por 60 ) que são os minutos de uma hora. $separar[1][0]*60 Para logo somar os minutos devolvidos por $separar[1][1] e $separar[2][1] respectivamente, Deste modo obtemos o valor global dos minutos transcorridos em ambas horas. Os resultados os agruparemos em $total_minutos_trasncorridos[1] e $total_minutos_trasncorridos[2]. O passo seguinte é atribuir-lhe o valor da diferença entre $total_minutos_trasncorridos[1] e $total_minutos_trasncorridos[2] à variável $total_minutos_trasncorridos. Já temos a diferença em Minutos de ambos cortes de horas. Agora devemos lhe dar formato legível e entendível. Iniciamos uma condição onde dizemos: Se $total_minutos_trasncorridos for menor ou igual a 59( if($total_minutos_trasncorridos<=59)) quer dizer que ainda não transcorreu 1 hora , portanto retornamos (return($total_minutos_trasncorridos.' Minutos')), que não é mais que a mensagem que devolverá toda a função quando se chame. Do contrário se (elseif($total_minutos_trasncorridos>59)) $total_minutos_trasncorridos for maior que 59, então se transcorreu pelo menos 1 hora e executamos as seguintes instruções: Levaremos os minutos a horas, dividindo por 60 (minutos de uma hora) e arredondamos o valor com round(); Já temos a Hora, porém nos falta os minutos. Para os minutos ($MINUTOS_TRANSCOrRIDOS), obteremos o resíduo da divisão entre $total_minutos_trasncorridos e 60 (minutos de uma hora). $MINUTOS_TRANSCORRIDOS=$total_minutos_trasncorridos%60 Já temos os valores desejados. Agora indicaremos se o valor de $HORA_TRANSCORRIDA ou $MINUTOS_TRANSCORRIDOS é menor ou igual que 9, para colocar-lhe um zero à esquerda. Por exemplo: se $MINUTOS_TRANSCORRIDOS for igual a 9, então a condição avalia TRUE e lhe coloca o 0 ao começo, devolvendo 09. O mesmo processo o repetimos com $HORA_TRANSCORRIDA. Finalmente retornamos o resultado: return ($HORA_TRANSCORRIDA.':'.$MINUTOS_TRANSCORRIDOS.' Horas'); Cabe destacar que podem adaptar-lhe umas instruções para que quando os minutos forem iguais a 1 diga (Minuto) e não (Minutos), assim como com as horas. Para chamar a função: calcular_tempo_trasnc(date('H:i'),'16:12'); Onde date('H:i'),é a hora atual do servidor e 16:12 desde onde se começa a contar.
Autoria e outras referências sobre este artigo Dentro deste artigo: + 1 manual relacionado + 1 categoria relacionada
Manuais relacionados com este artigo Dentro de Workshop de PHP Seguinte: Criação de gráficos em PHP com JpGraph Anterior: Tutorial de BBCode Categorias relacionadas Através das categorias do nosso diretório podem ser encontrados outros tipos de recursos relacionados com este artigo: + Entrar em Scripts em PHPComentários dos visitantes Os comentários dos visitantes são para ampliar a informação do artigo. Todos podem participar.
|
| Sobre nós | Copyright | Anuncie | Entrar em contato | <criarweb> |