+2

Diferença entre datas (Dias,Horas ou Minutos)

criado por BOZO em 04/05/2006 10:19am
Função Calucula diferença entre datas, retornando a diferença entre Dias, Horas, Ou minútos...
Data Autor Changelog Download
04/05/2006 10:19am BOZO - Versão 0.1

Comentários:

Mostrando 1 - 10 de 14 comentários
Caro Amigo para evitar que fique colocando uma qunatidade grande de codigo vou colocar somente onde eu alterei

acrescentei a função passada por vc

function formata($data){

return substr($data,8,2)."/".substr($data,6,2)."/".substr($data,0,4)." ".substr($data,11,8);

}

e depois chamei esta função e passando como parametro as duas variaveis que estão recebendo as informações do banco, não deu certo, então tentei com as outras duas variaveis e também não deu certo abaixo segue como tentei fazer caso esteja errado por favor me oriente.

$sql = mysql_query("Select * from chamado where codigo = 2");
$oRow = @mysql_fetch_object($sql);
$dt1 = $oRow->data_fecha;
$dt2 = $oRow->data_abertura;
formata($dt1);
formata($dt2);
$data1 = $dt1;
$data2 = $dt2;
//formata($data1);
//formata($data2);
20/02/2009 3:55am (~16 anos atrás)

Caro amigo BOZO novamente me ajudando , mas me desculpa não sei onde chamar esta função será que vc poderia me ajudar mostrando no pedaço do meu código acima onde posso e de que formar chamar esta função?

Desde já agradeço e que Deus derrame suas benções sobre vc e sobre todos deste forum.

Att.

Black_33.
16/02/2009 3:46am (~16 anos atrás)

BOZO disse:
Black 33, ta errado pq ele trabalha com a data no formatdo dd/mm/aaa

tenta formatr a data antes de uasr a funcao...

algo tipo

function formata($data){

return substr($data,8,2)."/".substr($data,6,2)."/".substr($data,0,4)." ".substr($data,11,8);

}


qualquer coisa da um toque.
10/02/2009 2:43pm (~16 anos atrás)

Cfe. o post acima gotaria muito que pudessem me ajudar, pois já tentei revirar este codigo e não consegui achar o que poderia esta fazendo gerar este resultado.
Gostaria muito de agradecer a Deus e depois a vcs deste forum e o Pai derrame suas bençãos sobre vcs.
Att.
Black_33
10/02/2009 8:14am (~16 anos atrás)

Meu amigo BOZO muito obrigado mesmo vc ajudou muito consegui fazê-lo rodar , mas com minha inesperiencia não esta dando o valo correto segue o script abaixo para que vc de uma olhada e me ajude a resolver esse pq problema
<?
include"config.php";
/*

Retorna diferença entre as datas em Dias, Horas ou Minutos

Function Diferenca(data maior, [data menos],[dias horas ou minutos])

Primeiro parametro, Data de inicio, no formato 04/05/2006 12:00
Se não passado o seundo parametro, dá o valor da data atual
Terceiro parametro, diferença a ser retornada:

"m" Minútos
"H" Horas
"h": Horas arredondada
"D": Dias
"d": Dias arredontados


Gambiarra.com.br
Bozo@gambiarra.com.br

*/

Function Diferenca($data1, $data2="",$tipo=""){

if($data2==""){
$data2 = date("d/m/Y H:i");
}

if($tipo==""){
$tipo = "h";
}

for($i=1;$i<=2;$i++){
${"dia".$i} = substr(${"data".$i},0,2);
${"mes".$i} = substr(${"data".$i},3,2);
${"ano".$i} = substr(${"data".$i},6,4);
${"horas".$i} = substr(${"data".$i},11,2);
${"minutos".$i} = substr(${"data".$i},14,2);
}

$segundos = mktime($horas2,$minutos2,0,$mes2,$dia2,$ano2)-mktime($horas1,$minutos1,0,$mes1,$dia1,$ano1);

switch($tipo){

case "m": $difere = $segundos/60; break;
case "H": $difere = $segundos/3600; break;
case "h": $difere = round($segundos/3600); break;
case "D": $difere = $segundos/86400; break;
case "d": $difere = round($segundos/86400); break;

}

return $difere;

}
$sql = mysql_query("Select * from chamado where codigo = 2");
$oRow = @mysql_fetch_object($sql);
$dt1 = $oRow->data_fecha;
$dt2 = $oRow->data_abertura;
$data1 = $dt1;
$data2 = $dt2;

echo "$data1<br>";
echo "$data2<br>";

echo Diferenca($data1,$data2,"D");
echo " dias exatos.<br>";
echo Diferenca($data1,$data2,"d");
echo " dias arredondados.<br>";
echo Diferenca($data1,$data2,"H");
echo " horas exatas.<br>";
echo Diferenca($data1,$data2,"h");
echo " horas arredondadas.<br>";
echo Diferenca($data1,$data2,"m");
echo " minútos <br>";


?>
BOZO é o seguinte tenho no meu banco dois campos datetime
que no script acima é data_abertura e o data_fecha e neles tem as seguintes informações data_abertura (2009-01-28 08:35:42) e data_fecha (2009-01-29 15:35:42)e o resultado do script esta assim:

2009-01-28 08:35:42
2009-01-29 15:35:42
0.291666666667 dias exatos.
0 dias arredondados.
7 horas exatas.
7 horas arredondadas.
420 minútos

Sendo que o resultado era para ser
1 dia
7 horas
1860 minutos

se possível gostaria de contar com sua ajuda novamente amigo.
E desde já agradeço e que Deus derrame suas bençãos sobre vc.

Att.

Black_33
06/02/2009 8:42am (~16 anos atrás)

BOZO disse:
na verdade ta dando errado pq o script q vc ta usando foi uma adaptacao do original para calcular somente hora...

tenta usar o script postado.

qualquer duvida eh so falar.
04/02/2009 1:42pm (~16 anos atrás)

Boa tarde a todos
peguei este escript que vcs postaram e tentei fazer alumas adpatações para minha necessidade so que esta zerando os resultado segue o script abaixo.
<?
include"config.php";

Function Diferenca($hora1, $hora2=""){

if($hora2==""){
$hora2 = date("H:i:s");
}

for($i=1;$i<=2;$i++){
${"horas".$i} = substr(${"hora".$i},0,2);
${"minutos".$i} = substr(${"hora".$i},3,2);
${"segundos".$i} = substr(${"hora".$i},6,2);
}

$dia = date(d);
$mes = date(m);
$ano = date(Y);

$segundos = mktime($horas2,$minutos2,$segundos2,$mes,$dia,$ano)-mktime($horas1,$minutos1,$segundos1,$mes,$dia,$ano);

return date("H:i:s",mktime(0,0,$segundos,$mes,$dia,$ano));

}
$sql = mysql_query("Select * from chamado");
$oRow = mysql_fetch_object($sql);
$dt1 = $oRow->data_abertura;
$dt2 = $oRow->data_fecha;
$data1 = $dt1;
$data2 = $dt2;

echo Diferenca($data1,$data2);
echo " diferença entre as horas.<br>";

?>

resultado no I.E e FireFox

2009-01-27 16:06:14
2009-01-28 08:25:33
00:00:00 diferença entre as horas.

os campos do BD estão como datetime

Desde já agradeço a atenção de vcs e que Deus abençõe a todos.

Att.

Black_33
04/02/2009 9:10am (~16 anos atrás)

Cézar Ayran disse:
adoro programar tem coisa melhor???

http://www.plugmania.com.br
29/12/2008 3:39am (~16 anos atrás)

Caro amigo este script e simplismente Muiiito bom!!!!
Parabéns!!!!
11/04/2007 3:35am (~17 anos atrás)

Valeu d+ ! Agora vai ter que dar certo! Brigadão
13/09/2006 5:01am (~18 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)