Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Salve pessoal, tudo bem?
Seguinte, estou tentando acertar um calculo de data aqui, porem não estou conseguindo..
O que acontece é o seguinte:
$AtualMenos3 = date("d-m-Y", strtotime("2013-03-31 -3 month"));
$AtualMenos2 = date("d-m-Y", strtotime("2013-03-31 -2 month"));
$AtualMenos1 = date("d-m-Y", strtotime("2013-03-31 -1 month"));
$AtualMes = date("d-m-Y", strtotime("2013-03-31"));
O correto deveria ser:
31-03-2013
28-02-2013
31-01-2013
31-12-2012
Porem, o php esta calculando a data errado, pois quando més é Fevereiro (que só possui 28 dias) o calculo sai errado..
Ele sai assim:
31-03-2013
03-03-2013
31-01-2013
31-12-2012
Alguém saberia me dar uma luz de como devo corrigir isso? pois esta complicado.. To travado, não consigo pensar em nada :\
Obrigado desde já!
Abraços
cara nunca tinha passado por isso mas pelo que pesquisei esse bug ocorre mesmo!
a forma que achei para encontrar o ultimo dia de fevereiro foi assim, mas só busca o último dia.
$AtualMenos1 = date("d-m-Y", strtotime("2013-03-31 last day of -1 month"));
se encontrar uma outra solução posto aqui.
Up
Foi mal, não havia reparado que o problema era no mês de fevereiro.
Vê se isso ajuda:
para retornar o ultimo dia do mes use o parametro t
echo date('t');
Testei aqui e tudo ok.
Você deve estar fazendo algo errado ae.
$AtualMenos3 = date("d-m-Y", strtotime("2013-03-31 -3 month"));//exibe 31-12-2012
$AtualMenos2 = date("d-m-Y", strtotime("2013-03-31 -2 month"));//exibe 31-01-2013
$AtualMenos1 = date("d-m-Y", strtotime("2013-03-31 -1 month")); //exibe 03-03-2013
$AtualMes = date("d-m-Y", strtotime("2013-03-31"));//exibe 31-03-2013
http://codepad.org/9a2hlPwr