Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fiamenghi

[Resolvido] Calcular horas - PHP

Recommended Posts

Pessoal preciso de ajuda.

Tenho tres componentes select em meu form, sao eles: hora inicial, intervalo, hora final.

Através deles preciso calcular a hora trabalhada do funcionario.

Como fazer isso em PHP?

Compartilhar este post


Link para o post
Compartilhar em outros sites

voce quer um relogio de ponto??

 

a pessoa vai informar esses horarios na tela, eu vou ter que calcular e gravar no banco no campo horasubtotal.

somente o calculo que nao sei fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, primeiramente, é melhor que o horario esteja em formato de 24hrs...

 

Daí você poderia fazer assim:

 

<?php

$total_horas = $hr_final - $hr_inicial;
$horas_trabalhadas = $total_horas - $intervalo;

?>

 

ALTERNATIVA SIMPLES:

 

$horas_trabalhadas = bcsub($hr_final, $hr_inicial, 2)-$intervalo;

 

 

$horas_trabalhadas guardará o total de horas que o peão trabalhou (tirando a hora de intervalo né).

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, primeiramente, é melhor que o horario esteja em formato de 24hrs...

 

Daí você poderia fazer assim:

 

<?php

$total_horas = $hr_final - $hr_inicial;
$horas_trabalhadas = $total_horas - $intervalo;

?>

 

ALTERNATIVA SIMPLES:

 

$horas_trabalhadas = bcsub($hr_final, $hr_inicial, 2)-$intervalo;

 

 

$horas_trabalhadas guardará o total de horas que o peão trabalhou (tirando a hora de intervalo né).

 

Abraços

 

Lucas, nao ta dando certo, veja o formato que estou gravando no banco: 07:30:00

O tipo do campo no mysql é TIME, será que é o formato o problema?

 

valew.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa...e aí Fiamenghi só de boa??? Acho que não né...tem esse problema aqui para você resolver né....rsss

 

Recentemente tive que fazer um sistema de controle de horas extras de uma empresa de coletivo...então...vou tentar resolver o seu problema ok.

 

Bom...irei criar um script aqui....e daki a pouco irei posta-lo para você beleza....

Aguarde aí....

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php 
/*Bom...vamos lá.

Ok...vamos entrar com os respectivos dados.*/

 echo "<br>Hora Inicial = ".$horaInicial = "08:00:00";
 echo "<br>Hora Final = ".$horaFinal   = "18:00:00";
 echo "<br>Intervalo = ".$intervalo   = "02:00:00";
  echo "<br>Intervalo = ".$horaAuxuliar   = "00:00:00";
 /*
  	Bom...primeiramente...você terá que converter esses valores com a função strtotime 
   */

 $horaInicial  = strtotime($horaInicial);
 $horaFinal    = strtotime($horaFinal);
 $intervalo    = strtotime($intervalo);
 $horaAuxuliar = strtotime($horaAuxuliar);
 /*
  	Bom...agora é só dividir os valores...e você terá o total de segundos trabalhados
  */
 echo "<br><br>Total de Segundos trabalhados = ".$totalSegundos = ($horaFinal - $horaInicial);
 
 /* Observe que...já que estamos falando de segundos e você quer 
  	saber o total de horas trabalhas...então...você terá que dividir pela quantidade de segundos existente em 1 hora...que no caso é 3600 segundos ok*/
 echo "<br>Total de Horas Trabalhadas = ".$totalHora = $totalSegundos / 3600; 
 
 /*E não podemos esquecer a hora de intervalo né...observe que criei uma hora auxiliar para que possa ser interagaida com ele beleza...*/
 echo "<br>Segundos Intervalor = ".$segundosIntervalo = $intervalo - $horaAuxuliar;
  echo "<br>Intervalo = ".$horaIntervalo = $segundosIntervalo /3600;
 
 /* E finalmente para que você saiba realmente quantas horas o fulano trabalhou...de acordo com as horas inseridas pelo usuario é claro...*/
 
 echo "<br>Total de Horas trabalhadas menos o intervalo = ". $horasTrabalhadas = $totalHora - $horaIntervalo;
 
  $segundosTotal = $totalSegundos - $segundosIntervalo;
  
  /*E para que tudo saia num formato bunitinhu...te messa função aí para converter a parada ok...*/
  echo "<br>Horas = ".$hora = converterHora($segundosTotal);
  
  
 function converterHora($total_segundos){
			
			$hora = sprintf("%02s",floor($total_segundos / (60*60)));
			$total_segundos = ($total_segundos % (60*60));
			
			$minuto = sprintf("%02s",floor ($total_segundos / 60 ));
			$total_segundos = ($total_segundos % 60);
			
			$hora_minuto = $hora.":".$minuto;
			return $hora_minuto;
  }
 
?>
Agora é só adaptar ao seu codigo aí beleza...

Bom...espero te te ajude aí...

Abraços amigo... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado Roberto, deu certo o código.

Ficou perfeito e de fácil entendimento, estou começando em PHP e por isso estou apanhando um pouco...rsrsrs

Valew mesmo pela ajuda.

Forte abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outro forte abraço...precisando estamos aqui beleza.

Boa sorte e seja bem vindo ao PHP (você irá apanhar um pouco apenas no inicio...mas logo pegará o conceito da coisa...porém...sempre irá aparecer algo novo para você fazer...portanto...estude...e quando não souber...peça ajuda...rssss). http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Sucesso amigo!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.