Ir ao conteúdo
  • Cadastre-se

PHP - Somar datas


Posts recomendados

Estou desenvolvendo um sistema para empresa que trabalho, no qual insere no banco o tempo gasto em cada viagem pelos motoristas. Só que devo apresentar a soma de todos os tempos gastos. No banco uso o tipo de dado datetime que insere por exemplo "0000-00-01 10:32:00". Fiz um laço no php para retornar todas as datas e ir incrementando, mas nada deu certo ate agora, alguma dica?

Uso o PHP 5.3.5

Link para o comentário
Compartilhar em outros sites

Obrigado pela dica.

Nunca tinha trabalhado com tipos date ou time antes, mesmo assim na criação do banco acabei optando por usar o tipo datetime.

Salvo no banco o dia e hora que o motorista viajou e depois salvo o dia e a hora que ele chegou, depois uso o diff para calcular a diferença e o resultado jogo no banco no campo datetime. So que preciso somar todos os tempos de duração de todas as viagens para depois calcular o ganho do motorista.

 

ontem tentei esse código e aparente deu certo, não sei se é a maneira correta de fazer.

 

exemplo:

<?php
	// INICIALIZA O CONTADOR
	$Totaldia = 0;
	$Totalhora = 0;
	$Totalminuto = 0;
	
	// BUSCA NO BANCO
	
	{	// FAZ O WHILE
	
		// RETORNA TEMPO GASTO OBS: NO BANCO ESTA SALVO EXATAMENTE DESTA FORMA
		$Tempogasto = new DateTime ("0000-00-03 04:30:06");

		$RetornaDias = $Tempogasto -> format ('d');
		$RetornaHoras = $Tempogasto -> format ('H');
		$RetornaMinut = $Tempogasto -> format ('i');
	 
		$Totaldia = $Totaldia + $RetornaDias;
		$Totalhora = $Totalhora + $RetornaHoras;
		$Totalminuto = $Totalminuto + $RetornaMinut;
	 
			// CONDIÇÕES DE INCREMENTO
			if($Totalminuto > 59)
			{
				$Totalminuto = $Totalminuto - 60;
				$Totalhora = $Totalhora + 1;
			}
			
			if($Totalhora > 23)
			{
				$Totalhora = $Totalhora - 23;
				$Totaldia = $Totaldia + 1;
			}
	} // FIM WHILE

echo $Totaldia." dias, ".$Totalhora." horas, ".$Totalminuto." minutos";
 
 ?>

 

Link para o comentário
Compartilhar em outros sites

Desculpa a demora. Você pode usar um foreach para fazer uma interação no array das datas das viagem, dentro desse foreach você tenta fazer como te mostrei lá em cima, daí na hora de echoar, você pode o formato que você quer que apareça, e acho que esses códigos que verifica se o minuto é maior que 59 e daí acrescentar uma hora nem seria necessário.

Não sei se ficou muito claro, me desculpa qualquer coisa, não sei mexer muito com dates. Mas acho que vai dar certo o que eu sugeri. Chegando em casa eu posso tentar fazer um exemplo.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!