Ir para conteúdo

POWERED BY:

Arquivado

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

kradepau

Somar Time PHP

Recommended Posts

Dentro de uma tabela mysql que tem um campo tempo, e os tempos são salvos minutos exemplo: linha1 00:05 minutos - Linha2  00:15 minutos e por ae vai. eu queria somar esses tempos e dar um echo de quantas horas tem dentro deste campo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o campo esta string, o banco é mysql e é salvo nele da seguinte forma 00:00 ou exemplo 00:01 minutos

Compartilhar este post


Link para o post
Compartilhar em outros sites

essential-copying-and-pasting-from-stack

 

 https://stackoverflow.com/questions/22681725/how-to-sum-n-number-of-time-hhmm-format

 

Pra evitar o warning q o brother(Pathik Vejani) falou só adicionar...

function AddPlayTime($times) {	
	$minutes = 0;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pensa comigo.

 

Um retorno do banco de dados é um conjunto de 'linhas' correto?

 

Então  a pergunta deveria seria como converter um array mult/soc em um array simples 

 

 

Em outras palavras seu objetivo é fazer isso:

$times = array(
	 '00:15'
	,'00:45'
	,'00:60'	
	,'00:02'	
	,'00:02'	
	,'00:02'	
	,'00:02'	
);

Então você deve pesquisar...

 

Ou copiar isso:

<?php


$tempos = array_fetch_all();

$tempoGasto = array();

foreach($tempos as $tempo) {
	$tempoGasto[] = $tempo['NOME_TABELA'];
}

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Agora, gabrieldarezzo disse:

Pensa comigo.

 

Um retorno do banco de dados é um conjunto de 'linhas' correto?

 

Então  a pergunta deveria seria como converter um array mult/soc em um array simples 

 

 

Em outras palavras seu objetivo é fazer isso:


$times = array(
	 '00:15'
	,'00:45'
	,'00:60'	
	,'00:02'	
	,'00:02'	
	,'00:02'	
	,'00:02'	
);

Então você deve pesquisar...

 

Ou copiar isso:


<?php


$tempos = array_fetch_all();

$tempoGasto = array();

foreach($tempos as $tempo) {
	$tempoGasto[] = $tempo['NOME_TABELA'];
}

 

 

 

Opa, blz, vou testar oque me passou e pesquisar tambem retorno breve o seu comentario, valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites
Agora, gabrieldarezzo disse:

Qual abstração de Banco se ta usando ai?

 

PDO?

mysqli?

mysql?

PDO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fica +/- assim :



$horarios = $stmt->fetchAll(PDO::FETCH_ASSOC);

print_r($horarios);

/*
$horarios = array(
	array(
		'id'         => '1'
		,'hora_gasta' => '01:00'
	)
	,array(
		'id'         => '2'
		,'hora_gasta' => '00:20'
	)
	,array(
		'id'         => '3'
		,'hora_gasta' => '00:10'
	)
);
*/

$totalTempo = array();

foreach($horarios as $horario) {
	$totalTempo[] = $horario['hora_gasta'];
}

print_r($totalTempo); // array('01:00', '00:20', '00:10')

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 minutos atrás, gabrieldarezzo disse:

Fica +/- assim :




$horarios = $stmt->fetchAll(PDO::FETCH_ASSOC);

print_r($horarios);

/*
$horarios = array(
	array(
		'id'         => '1'
		,'hora_gasta' => '01:00'
	)
	,array(
		'id'         => '2'
		,'hora_gasta' => '00:20'
	)
	,array(
		'id'         => '3'
		,'hora_gasta' => '00:10'
	)
);
*/

$totalTempo = array();

foreach($horarios as $horario) {
	$totalTempo[] = $horario['hora_gasta'];
}

print_r($totalTempo); // array('01:00', '00:20', '00:10')

 

Testando e passo o result daqui a pouco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não meu querido.

 

O Array deveria ser composto por strings simples (tira esse br)

 

O Objetivo é você fazer um array simples assim:

$times = array(
	 '00:15'
	,'00:45'
	,'00:60'	
	,'00:02'	
	,'00:02'	
	,'00:02'	
	,'00:02'	
);

print_r($totalTempo)

 

 

Pois o link que eu dei você deveria olhar a resposta e não a pergunta kkkk

 

Se liga a resposta é essa:

function somarTempo($times) {
    $minutes = 0;

    // loop throught all the times
    foreach ($times as $time) {
        list($hour, $minute) = explode(':', $time);
        $minutes += $hour * 60;
        $minutes += $minute;
    }

    $hours = floor($minutes / 60);
    $minutes -= $hours * 60;

    // returns the time already formatted
    return sprintf('%02d:%02d', $hours, $minutes);
}

 

 

Você passa um array e ele retorna uma string com a soma de todos.

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 minutos atrás, gabrieldarezzo disse:

Não meu querido.

 

O Array deveria ser composto por strings simples (tira esse br)

 

O Objetivo é você fazer um array simples assim:


$times = array(
	 '00:15'
	,'00:45'
	,'00:60'	
	,'00:02'	
	,'00:02'	
	,'00:02'	
	,'00:02'	
);

print_r($totalTempo)

 

 

Pois o link que eu dei você deveria olhar a resposta e não a pergunta kkkk

 

Se liga a resposta é essa:


function somarTempo($times) {
    $minutes = 0;

    // loop throught all the times
    foreach ($times as $time) {
        list($hour, $minute) = explode(':', $time);
        $minutes += $hour * 60;
        $minutes += $minute;
    }

    $hours = floor($minutes / 60);
    $minutes -= $hours * 60;

    // returns the time already formatted
    return sprintf('%02d:%02d', $hours, $minutes);
}

 

 

Você passa um array e ele retorna uma string com a soma de todos.

 

 

 

 

Ok, verificando

Compartilhar este post


Link para o post
Compartilhar em outros sites
10 minutos atrás, kradepau disse:

Ok, verificando

Certissimo, funcionando que uma blz, Muito obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 minutos atrás, kradepau disse:

Certissimo, funcionando que uma blz, Muito obrigado

Só para entender oque seria 

'%02d:%02d'

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.