Diferença entre datas (Dias,Horas ou Minutos)
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 |
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.
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)
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.
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
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
<?
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)
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.
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
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)
Caro amigo este script e simplismente Muiiito bom!!!!
Parabéns!!!!
Parabéns!!!!
11/04/2007 3:35am
(~17 anos atrás)
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);