Ir para conteúdo

POWERED BY:

Arquivado

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

Louyzbro

Calculo de horas

Recommended Posts

Bom Dia a todos, sou meio iniciante em javascript e estou tentando me virar rs, mas esta dificil.

 

Criei um calculo de horas em que possuo 4 campos Hora Entrada ,Hora Saida,Hora Abono, e Horas Totais

 

O programa faz a conta e automaticamente me joga as horas totais no campo horas Totais que o funcionário ficou.

 

Meu código ficou legal, porem, ele só esta calculando o valor antes dos (dois pontos : ) e não calcula o resto...

 

Gostaria que alguem pudesse me ajudar... está muito dificil rs...

 

Segue o código abaixo

 

<script>

function formatar(src, mask)
{
  var i = src.value.length;
  var saida = mask.substring(0,1);
  var texto = mask.substring(i)
if (texto.substring(0,1) != saida)
  {
        src.value += texto.substring(0,1);
  }
}

</script>
<script language="Javascript">
function soma(){

document.getElementById("total").value = '0'
var h_entrada = parseFloat(document.getElementById("h_entrada").value);
var h_saida = parseFloat(document.getElementById("h_saida").value);
var h_abono = parseFloat(document.getElementById("h_abono").value);
document.getElementById("total").value = h_saida - h_entrada - h_abono;
}
</SCRIPT>
</head>
Hora Entrada: <input type="text" id="h_entrada" onkeypress="formatar(this, '##:##')" value="0"><br>
Hora Saida: <input type="text" id="h_saida" onkeypress="formatar(this, '##:##')" value="0" onblur="soma()"><br>
Hora Abono: <input type="text" id="h_abono" onkeypress="formatar(this, '##:##')" value="0" onblur="soma()"><br><hr size="1">
<b>Horas Totais:<input type="text" onkeypress="formatar(this, '##:##')" id="total"></b> 

Aguardo retorno..

Muito Obrigado

 

Luiz

Compartilhar este post


Link para o post
Compartilhar em outros sites

i aew Louyzbro, tenta fazer tipo assim:

function soma()
	{
		var total 	  = document.getElementById( "total" ) ;
		total.value   = '0' ;
		
		var h_entrada = getHorasEMinutos( document.getElementById( "h_entrada" ).value ) ;
		var h_saida   = getHorasEMinutos( document.getElementById( "h_saida"   ).value ) ;
		var h_abono   = getHorasEMinutos( document.getElementById( "h_abono"   ).value ) ;
		
		var h = ( ( h_saida - h_entrada - h_abono ) / 60 ) * (-1) ;
		var m = ( ( h_saida - h_entrada - h_abono ) % 60 );
		m = parseInt( m.toFixed() ) + 60 ;
		total.value = Math.floor( h ) + ':' + m ;
	}
	
	function getHorasEMinutos( strVal )
	{
		var aTime = strVal.split( ':' ) ;
		var horas = parseInt( aTime[0] * 60 );
		var mins  = parseInt( aTime[1] ) ;
		return horas + mins ;
	}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa bleza romerito..

 

obrigado pela sua ajuda, porem, estou tendo problema, quando eu nao coloco hora abono ele esta me retornando o valor NAN:NAN no campo,

 

coloque hora inicio 14:00 hora saida 18:00 e hora abono 01:00... olha que calculo mais estranho...

 

por favor me ajude a resolver isso...

 

Obrigado...

 

Luiz

 

Acho que arrumei, porem se ainda alguem puder me ajudar...

 

Estou com o seguinte código agora..

 

Está tudo certo, só que dessa vez, Nas Horas Totais, ele esta me retornando dois numeros só por exemplo

 

Se são 06:00 as horas totais, ele me retorna 6:0 se alguem puder me ajudar a resolver isso agradeço muito!

 

Segue abaixo o código!

 


<script language="Javascript">
function soma()
        {
                var total         = document.getElementById( "Hora_Total" ) ;
                total.value   = '0' ;
                
                var h_entrada = getHorasEMinutos( document.getElementById( "Hora_Entrada" ).value ) ;
                var h_saida   = getHorasEMinutos( document.getElementById( "Hora_Saida"   ).value ) ;
                var h_abono   = getHorasEMinutos( document.getElementById( "Hora_Abono"   ).value ) ;
                
				
		
                var h = ( ( h_saida - h_entrada - h_abono ) / 60 );
                var m = ( ( h_saida - h_entrada - h_abono ) % 60 );
			
                m = parseInt( m.toFixed() ) + 00 ;
		
                total.value = Math.floor( h ) + ':' + (m)  ;
				
				

        }
        
        function getHorasEMinutos( strVal )
        {
                var aTime = strVal.split( ':' ) ;
                var horas = parseInt( aTime[0] * 60 );
                var mins  = parseInt( aTime[1] ) ;
						
					
				
                return horas + mins ;
        }
</SCRIPT>

Poxa pessoal, alguem me ajude com isso, tantas visualizações e somente uma resposta... =/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Concatene o 0, transformando em string.

um simples if, para verificar se o teu valor possui apenas um digito, se possuir você concatena um 0 antes de enviar para exibição.

 

Aguarde ser respondido, Post UP vai contra as regras do fórum.

http://forum.imasters.com.br/index.php?app=core&module=help

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta, mas eu não sei como fazer isso, você teria como me mostrar?

 

no Aguardo..

 

obs: Desculpe, mas não foi minha intenção evidenciar meu tópico.

 

Bruno, você que parece saber a respeito disso, tem como me arrumar a linha pra eu pescar o peixe???

 

Desde o dia 17 não consegui ainda entender o que você disse pra eu fazer no código.

 

Não precisa fazer por mim, só precisava de uma pequena explicação para meu entendimento, não sou profissional nisso.

 

Obrigado..

 

No Aguardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Algo assim:

<script type="text/javascript">
function soma()
{
	var total = document.getElementById( "Hora_Total" ) ;
	total.value = '0' ;

	var h_entrada = getHorasEMinutos( document.getElementById( "Hora_Entrada" ).value ) ;
	var h_saida   = getHorasEMinutos( document.getElementById( "Hora_Saida"   ).value ) ;
	var h_abono   = getHorasEMinutos( document.getElementById( "Hora_Abono"   ).value ) ;



	var h = ( ( h_saida - h_entrada - h_abono ) / 60 );
	var m = ( ( h_saida - h_entrada - h_abono ) % 60 );

	m = parseInt( m.toFixed() ) + 00 ;
	
	total.value = concatZero( Math.floor( h ) )+ ':' + concatZero(m)  ;
}
function concatZero( num )
{
	num = num+'';//forçando virar string
	if( num.length==1 ) num = '0'+ num;
	
	return num;
}
function getHorasEMinutos( strVal )
{
	var aTime = strVal.split( ':' ) ;
	var horas = parseInt( aTime[0] * 60 );
	var mins  = parseInt( aTime[1] ) ;

	return horas + mins ;
}
</script>
<input type="text" id="Hora_Entrada" value="14:00" />
<input type="text" id="Hora_Saida" value="18:03" />
<input type="text" id="Hora_Abono" value="01:00" />

Total: <input type="text" id="Hora_Total" />
<input type="button" value="soma()" onclick="soma()" />

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.