Videres 3 Denunciar post Postado Abril 13, 2012 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
regina 0 Denunciar post Postado Abril 13, 2012 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
Videres 3 Denunciar post Postado Abril 16, 2012 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
hufersil 145 Denunciar post Postado Abril 16, 2012 Acabei de responder isso em outro tópico :) PHP 5.3 tem isso pronto. @braços e fiquem com Deus! Compartilhar este post Link para o post Compartilhar em outros sites
Videres 3 Denunciar post Postado Abril 17, 2012 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