Ir para conteúdo

POWERED BY:

Arquivado

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

Djonatan Buss

[Resolvido] Soma e subtração de meses usando date(). Preciso mant

Recommended Posts

Fiz uma certa gambiarra pra que isso não aconteça mais.

Queria saber se existe alguma forma de saber o número do mês passado e do mês seguinte mantendo o 0 a esquerda.

 

Estou usando date('m') -1, mas o resultado retornado vem sem o 0.

quero formar a data

 

hoje/mes_passado/esse_ano

echo date('d') . '/' . date('m')-1 . '/' . date('Y')

 

 

O problema é que fica retornando

 

11/2/2011

como falei, eu fiz uma gambiarrinha pra concatenar o 0 quando (date('m')-1) <10

mas preferiria descobrir um método melhor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não deixem de consultar o manual do PHP http://www.php.net/manual/pt_BR/

 

Passei pelo mesmo problema e achei esta solução lá...

 

Boa sorte!

 

Eu consultei o php.net mas a única coisa que achei foi

$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));

 

No arquivo da função date().

 

Como tu fez pra encontrar isso no php.net?

 

pra manter o zero , você pode usar substr .. , mais o propio date('m') , ja ia retornar um zero .. caso for , 0,1,2,3,4,5,6,7,8,9 a data .. você queria que se foçe 10 , 11 , 12

retornase 010 ?

 

Não não Andrey.

 

O que acontece é que o resultado de date('m') é :

01,02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12

 

Provavelmente por esse resultado ser uma string (to expeculando) se eu fizer 03 -1 o tipo muda pra inteiro e ignora o 0 a esquerda

dae o retorno fica 2. Como eu to formando a data com date('d') / date('m') -1 / date('Y') eu ia ter algo como 11/2/2011 invés de 11/02/2011.

 

Pra ser mais eficiente, a solução do Roman funcionou perfeitamente...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha este link que fala sobre a função strtotime (http://br.php.net/manual/pt_BR/function.strtotime.php), neste link é utilizado a função date() com strtotime(), mas não atendia o meu problema. Então utilizei a função strftime (http://br.php.net/manual/pt_BR/function.strftime.php) em alguns casos específicos no lugar do date().

 

Eu me expressei mal, eu estudei o manual PHP para ter essa idéia.

 

Você também pode usar:

$data = date("d/m/Y", strtotime("-1 Month"));

Compartilhar este post


Link para o post
Compartilhar em outros sites

\O .. parabems .. mais se o caso era tirar o zero dali ..

basta tu da um str_replace pro formato de data com substr .. vai dar no mesmo :P :huh:

 

 

  $data_a = date("m");
  $nv_data = date("d/").str_replace("0","",substr($data_a,0,2)).'/'.date("Y");
  echo $nv_data;

 

Saida

11/3/2011

:P

Compartilhar este post


Link para o post
Compartilhar em outros sites

\O .. parabems .. mais se o caso era tirar o zero dali ..

basta tu da um str_replace pro formato de data com substr .. vai dar no mesmo :P :huh:

 

 

  $data_a = date("m");
  $nv_data = date("d/").str_replace("0","",substr($data_a,0,2)).'/'.date("Y");
  echo $nv_data;

 

Saida

11/3/2011

:P

 

Andrey,

1 - A intenção não era tirar o zero dali, e sim conseguir representar o mês anterior, ou seja, mes atual - 1, sem que fosse perdido o '0', ou seja, meses: 01,02,03...

2 - Se tu analisar a tua solução ela desperdiça algum recurso fazendo atribuições, utilizando funções, concatenando e etc... Procurava algo como o roma indicou, mais apropriado a esse tipo de situação que deve ser recorrente já...

 

Agradeço a ajuda mesmo assim, abraço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

mktime também resolve

 

echo date('d/m/Y',mktime(0,0,0,date('m')+1,date('d'),date('Y')));

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mktime também resolve

 

echo date('d/m/Y',mktime(0,0,0,date('m')+1,date('d'),date('Y')));

 

Abraços.

 

Boa, valeu também, cheguei a usar a mktime, mas não cheguei a usar ela como parametro da date...

 

Então podemos ter:

$mes_anterior = date('m', ,mktime(0,0,0,date('m')-1,0,0));

$mes_anterior = date('m', strtotime('-1 Month'));

$mes_anterior = strftime('%m', strtotime('-1 Month'));

 

Só não testei a do Periscuelo...

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.