Ir para conteúdo

POWERED BY:

Arquivado

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

TataMalfoy

somar horas

Recommended Posts

Eu já tentei inverter as horas, colocar menos.... e não tenho a mínima idéia de como somar as horas... Tenho que somar um tempo de tolerância (00:05:00) ao horário que o funcionário deve sair (18:00:00). Eu consegui diminuir os cinco minutos. Mas não consegui somar....

aí vai meu código.

<?php
				   $hi=$us['tolerancia'];
	   $hf=$us['ex2'];
	   $nDiff = strtotime($hf) - strtotime($hi);
	   $nHour = round($nDiff / 3600, 2);
	   $nMin  = round(($nDiff / 60) % 60, 2);
	   $nSeg  = round($nDiff % 60, 2);
	   $sub=floor($nHour).":".floor($nMin).":".floor($nSeg);
	   if ($hora>=$sub)
	   {
		$sql="update ponto set horas='{$sub}' where id='{$pnt['id']}'";
		mysql_query($sql) or die (mysql_error());
		echo "<br>".$hora;
	   }
	   else
	   {
		echo "Você só pode bater o ponto após às {$sub}. Tente novamente mais tarde.";
	   }
?>

Se alguém souber me ajudar.. Por favor! Obrigada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara.., onde você tá pegando o horário atual? (horário em que o cara tah batendo o ponto?)

 

acho que não entendi o que você quer...

 

Mas já vou te dar umas dicas.., pq no sistema que eu to trabalhando tem um módulo de controle de ponto tb..., e uma coisa eu te garanto.., você não pode impedir o funcionário de bater ponto! isso é contra a lei..., portanto, cuidado com esse trexo aqui:

CODE
else

{

echo "Você só pode bater o ponto após às {$sub}. Tente novamente mais tarde.";

}

 

 

explica melhor o problema que assim talvez eu possa te ajudar, já trabalhei bastante com soma e subtração de tempo..

 

grande abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

só corrigindo minha gafe.., existe um caso em que você pode impedir o cara de bater o ponto.., na hora do almoço.., mas somente na volta de um tempo de descanso, nunca numa saída.., pois o trabalhador tem direito a sair antes do horário caso precise..., até porque se você somente permitir via sistema que o cara marque os pontos de entrada e saída nos horários pré definidos.., não tem porque ter um cartão ponto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

1°- Eu não sabia! \o/ *entrando em desespero* só estava cumprindo ordens....

2°- Eu tinha a intenção de colocar um horário máximo, tipo limite pro usuário bater o ponto. Se ele tentasse depois, o sistema não permitiria e ele teria de ir ao setor de rh pra justificar o atraso. Daí, o rh bateria o ponto manualmente. O meu problema é que eu não estou conseguindo somar o horário que o funcionário sai com o tempo de tolerância.

Tô pegando o horário atual na variável $hora.

$hora=date("H:i:s");

Compartilhar este post


Link para o post
Compartilhar em outros sites

tah.., se ele não conseguir bater ponto normalmente e tiver que bater de uma maneira diferente depois de um certo tempo de atraso sem problemas (junto ao RH no seu caso), mas mesmo assim não acho essa a melhor solução.., mas isso não vem ao caso...rsrs

 

vou testar teu código aqui cara.., se conseguir achar o erro posto aqui.., valeu...

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas cara.., a variável sub, vai contar uma string com a diferença entre a hora de saída e a tolerância, espera-se que essa diferença seja de apenas alguns minutos, e você está comparando ela com o horário que o cara bate o ponto..., continuo sem entender... rsrsrsr

 

talvez seja animarzisse minha.. hahaha

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom.. ele pega o horário em que o funcionário deve sair e diminui o horário de tolerância. Este é o horário mínimo em que o funcionário pode bater o ponto ($sub).

Então, se o horário de agora for menor do que o $sub, o funcionário tem que esperar.

 

Aí entra o meu problema. Somando a tolerância ao horário em que o horário deve sair, eu consigo o horário máximo em que o funcionário pode bater o ponto. Então tenho que comparar, se o horário de agora é maior.

 

Entendeu? [sim, minha lógica é uma massa confusa xD]

 

E eu não consigo somar a maldita hora!! \o/ *Frustrada*

 

Comentário nada a ver com tudo: Eu tbm sou de Curitiba! o/

Compartilhar este post


Link para o post
Compartilhar em outros sites

2 exemplos para ajudar:

 

1 - MySQL

 

escopo

DATE_ADD( CURRENT_DATE, INTERVAL value MINUTE)

exemplo

DATE_ADD( NOW(), INTERVAL 5 MINUTE)

referencias:

http://dev.mysql.com/doc/refman/5.0/en/dat...nction_date-add

http://dev.mysql.com/doc/refman/4.1/en/dat...nction_date-add

 

 

 

2 - PHP

echo date( 'H:i:s', strtotime( '5 minutes', mktime( date('H'), date('i'), date('s'), date('m'), date('d'), date('Y') ) ) );

ou

echo date( 'H:i:s', strtotime( '5 minutes', time() ) );

referencias:

- http://php.net/mktime

- http://php.net/date

- http://php.net/strtotime

- http://php.net/time

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.