Ir para conteúdo

POWERED BY:

Arquivado

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

Videres

Calculando a diferença de dias entre DUAS DATAS

Recommended Posts

Bom dia pessoal,

Estou com um problema de calcular a diferença de dias entre duas datas.

Dei uma pesquisada e naturalmente encontrei uns codigos na web, e tentei me aprofundar sobre eles... Porém o resultado n saiu como esperado.

 

Tentei de duas formas:

 

1º tentativa

$ano = 2009;
$mes = 03;
$dia = 2;

$anoF = 2009;
$mesF = 03;
$diaF = 4;

$dataStart = mktime(0, 0, 0, $dia[1], $mes[2], $ano[0]);
$dataAnd   = mktime(0, 0, 0, $diaF[1], $mesF[2], $anoF[0]);

$diferenca_segundos = $dataStart - $dataAnd;


$dias_diferenca  = $diferenca_segundos/(60*60*24); // 19522800 segundos
$dias_diferenca  = abs($dias_diferenca );
$dias_diferenca  = floor($dias_diferenca );
echo "<p class='textNotic'>$dias_diferenca</p>";

 

O resultado foi 0.

 

 

 

2º tentativa


$data_inicial = '23/03/2009';
$data_final   = '24/03/2009';
function dataToTimestamp($data) {
$dat = explode('/', $data);
return mktime(0, 0, 0, $dat[1], $dat[2], $dat[0]);
}

$time_inicial  = dataToTimestamp($data_inicial);
$time_final  = dataToTimestamp($data_final);

$dias = floor( $time_inicial - $time_final) / 86400;
$dias = abs($dias);

 

Resultado 366

 

 

Não consegui entender o motivo de sair esses valores, se alguem puder me ajudar fico agradecido.

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu uso esta função

/*
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" Minutos
"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;
}
/*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>";*/

uso: echo Diferenca(date("d/m/Y", $data_nova),date("d/m/Y"),"D");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu uso esta função

/*
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" Minutos
"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;
}
/*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>";*/

uso: echo Diferenca(date("d/m/Y", $data_nova),date("d/m/Y"),"D");

 

Vlws Regina vou dar uma olhada e assim q possivel posto o resultado! Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acabei de responder isso em outro tópico :)

 

PHP 5.3 tem isso pronto.

 

@braços e fiquem com Deus!

 

 

Vlws meu grande pela ajuda.. estou dando uma olhada apesar de ainda n ter tido muito sucesso mas.. acredito que o caminho seja esse mesmo.. vlws :thumbsup:

 

*Assim q conseguir alguma coisa posto aqui! abraç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.