Ir para conteúdo

Arquivado

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

Bruno Depieri Barduchi

Contador de horas progressivas e cumulativas com dias

Recommended Posts

Fala galera, blz?
Preciso de uma ajuda.

Tenho um projeto onde devo cumular horas trabalhadas de um serviço, ele deve armazenar no banco as horas/dias.

Então quando startado se não houver tempo anterior começa do zero, mas se já houve uma etapa anteriormente ele deve contar a partir daque e tempo e acumular, salvando depois no banco.

 

Não entendo de js mas creio que seja a melhor solução, achei um script interessante de timer mas não tenho domínio para inserir contagem de dias e nem como contar a partir de um tempo já existente.

<script language=JavaScript>
<!-- begin
function getSecs(sHors, sMins, sSecs, campo){
	sSecs++;
	if(sSecs==60){sSecs=0;sMins++;
    if(sMins<=9)sMins="0"+sMins;
    }
	if(sMins==60){sMins="0"+0;sHors++;
    if(sHors<=9)sHors="0"+sHors;
	}
	if(sSecs<=9)sSecs="0"+sSecs;
     
	document.getElementById(campo).innerHTML=sHors+":"+sMins+":"+sSecs;
    setTimeout("getSecs("+sHors+", "+sMins+","+sSecs+", '" +campo+ "')",1000);
	}
//-->
</SCRIPT>
<hr />
<script>setTimeout("getSecs(0,0,-1, \"clock1\")",1000);</script>
<span id="clock1"></span>

Alguém saberia me dizer como?

Tentei inserir na função a var sDias, e um if verificando se sHors == 24 ele adicionaria a var sDias +1, mas não funcionou.

 

Fico no aguardo, vlw e t+.

Compartilhar este post


Link para o post
Compartilhar em outros sites

<script language=JavaScript>
<!-- begin
function getSecs(sDias, sHors, sMins, sSecs, campo){
	sSecs++;
	if(sSecs==60){
		sSecs=0;sMins++;
    	if(sMins<=9)sMins="0"+sMins;
    }
	if(sMins==60){
		sMins="0"+0;sHors++;
    	if(sHors<=9)sHors="0"+sHors;
	}
	if(sHors==24){
		sHors="0"+0;sDias++;
	}
	if(sSecs<=9)sSecs="0"+sSecs;
     
	document.getElementById(campo).innerHTML=sDias+":"+sHors+":"+sMins+":"+sSecs;
    setTimeout("getSecs("+sDias+", "+sHors+", "+sMins+","+sSecs+", '" +campo+ "')",1000);
	}
//-->
</SCRIPT>
<hr />
<script>setTimeout("getSecs(0,0,0,-1, \"clock1\")",1000);</script>
<span id="clock1"></span>

1 etapa ok;

Agora os dias rolam;

 

2 etapa, preciso inserir um tempo inicial, por exemplo, 0:2:0:0 (2 horas), e ir acumulando, como faço?

Compartilhar este post


Link para o post
Compartilhar em outros sites

<script language=JavaScript>
<!-- begin
function getSecs(sDias, sHors, sMins, sSecs, campo, tempo){
	sSecs++;
	if(sSecs==60){
		sSecs=0;
		sMins++;
    	if(sMins<=9)sMins=sMins;
    }
	if(sMins==60){
		sMins=0;
		sHors++;
    	if(sHors<=8)sHors=sHors;
	}
	//converte para horas trabalhadas, se fossem dias normais seria 24h if(sHors==24){
	if(sHors==8){
		sHors=0;
		sDias++;
	}
	//corrige com 2 digitos
	if(sSecs<=9)sSecs="0"+sSecs;
	if(sMins<=9)sMins="0"+sMins;
	if(sHors<=9)sHors="0"+sHors;
	if(sDias<=9)sDias="0"+sDias;
	document.getElementById(campo).innerHTML=sDias+":"+sHors+":"+sMins+":"+sSecs;
    setTimeout("getSecs("+sDias+", "+sHors+", "+sMins+","+sSecs+", '" +campo+ "')",1000);
	form1.tempo.value = sDias+":"+sHors+":"+sMins+":"+sSecs;
}
//-->
</SCRIPT>
<?php
var_dump($_POST);
$data1 = '0,1,59,55';
$data2 = '0,7,59,55';
?>
<script>setTimeout("getSecs(<?= $data1 ?>, \"campo1\",'tempo;')",1000);</script>
<hr>
<form action="" method="POST" enctype="multipart/form-data" role="form" name="form1">
<input type="text" id="campo1" name="tempo" value="" >
<hr>
<input type="submit" value="Enviar" class="btn btn-primary"/>

Consegui....

Porem como acontece com Joseph Climer, "a vida não é um mar de rosas" ainda há um porém, preciso deixar os inputs dinâmicos, para que cada um tenha um valor de datas diferentes.

Como faço?

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.