Ir para conteúdo

POWERED BY:

Arquivado

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

paulopitte

Cmo posso Calcular diferença entre datas ?

Recommended Posts

Olá galera! beleza!estou com um problema!! alguem sabe como calcular diferenças entre datas......baseada por meses.....tipo assim!26/01/2005 para 26/01/2006 = 12 meses.26/01/2004 para 26/01/2006 = 24 meses.eu tenho essa função, mas ela retorna a direfença em dias.......function date_dif($date_ini, $date_end) { if (strcmp(substr($date_ini, 2, 1 ), "/") == 0) { $date_ini = substr($date_ini, 6, 4).substr($date_ini, 2, 4).substr($date_ini, 0, 2); $date_end = substr($date_end, 6, 4).substr($date_end, 2, 4).substr($date_end, 0, 2); } //end if $initial_date = getdate(strtotime($date_ini)); $final_date = getdate(strtotime($date_end)); $dif = ($final_date[0] - $initial_date[0]) / 86400; return ceil($dif); } Alquem pode me ajudar????é urguente!!!!!!obrigado....

Compartilhar este post


Link para o post
Compartilhar em outros sites

nada q um pouco de lógica de programação nao resolva hein???desculpa mas nao vou programar pra você... você tem q comparar as datas separadamente, ano, mes e dia e dependendo do resultado da comparação fazer a contagem.a lógica de comparação de datas é usar o formato YYYYMMDDexemplo 26/01/2006 ficaria 20060126se o ano inicial for 2005 e o final 2006 ja da pra acrescentar 12 meses na contagem... depois compare os meses...se o final for maior ele soma com o numero de meses ja contados no ano....senao ele subtrai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://br2.php.net/manual/pt_BR/ref.datetime.php

 

Mas ela não fará a coisa sozinha pra você não heim http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Tem que usar a lógica, so que ela vai transformar em um valor mais fácil de manusear, pelo menos eu acho http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://br2.php.net/manual/pt_BR/ref.datetime.phpMas ela não fará a coisa sozinha pra você não heim http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Tem que usar a lógica, so que ela vai transformar em um valor mais fácil de manusear, pelo menos eu acho http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif

belezavou tentar, mas obrigadão pela dica!

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode crer...a função time... nossa q vacilo o meu, nem tinha pensado nisso.... calcula a diferença de horas e transforma pra meses...ja elvis.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra calcular a diferença entre datas, seja os meses, os dias (...) tô usando essa função...function datediff($interval, $date1, $date2) { // Function roughly equivalent to the ASP "DateDiff" function /* Get the seconds first */ $seconds = strtotime($date2) - strtotime($date1); $date1=date("Y-m-d", strtotime($date1)); $date2=date("Y-m-d",strtotime($date2)); switch($interval) { case "y": list($year1, $month1, $day1) = split('-', $date1); list($year2, $month2, $day2) = split('-', $date2); $time1 = (date('H',$date1)*3600) + (date('i',$date1)*60) + (date('s',$date1)); $time2 = (date('H',$date2)*3600) + (date('i',$date2)*60) + (date('s',$date2)); $diff = $year2 - $year1; if($month1 > $month2) { $diff -= 1; } elseif($month1 == $month2) { if($day1 > $day2) { $diff -= 1; } elseif($day1 == $day2) { if($time1 > $time2) { $diff -= 1; } } } break; case "m": /* parses the year, month and days. split() was replaced with explode(), PHP Manual says it's faster */ list($year1, $month1, $day1) = explode('-', $date1); list($year2, $month2, $day2) = explode('-',$date2); $time1 = (date('H',$date1)*3600) + (date('i',$date1)*60) + (date('s',$date1)); $time2 = (date('H',$date2)*3600) + (date('i',$date2)*60) + (date('s',$date2)); $diff = ($year2 * 12 + $month2) - ($year1 * 12 + $month1); if($day1 > $day2) { $diff -= 1; } elseif($day1 == $day2) { if($time1 > $time2) { $diff -= 1; } } break; case "w": // Only simple seconds calculation needed from here on $diff = floor($seconds / 604800); break; case "d": $diff = floor($seconds / 86400); break; case "h": $diff = floor($seconds / 3600); break; case "i": $diff = floor($seconds / 60); break; case "s": $diff = $seconds; break; } //return the +ve integer only if ($diff<0){ $diff=0-$diff; } return $diff;}dae tu chama ela assim: $a = datediff("m",$duplicatas_vencimento,date('Y-m-d'));flw

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.