Atualizado em 26 de Fevereiro de 2014

Descobrir Mês Anterior ou Próximo com PHP

Olá pessoal,

Recentemente fiz um projeto onde eram gerados carnês de pagamentos mensais, com isso o vencimento sempre haveria de ser para o mês seguinte. Aqui no blog já vimos o post de como Obter Data do Dia Anterior com PHP, com este mesmo método poderíamos calcular datas de um próximo dia, porém teríamos que sempre saber a quantidade de dias para fazer o calculo o que geraria mais trabalho.

Por isso o PHP nos disponibiliza uma forma mais fácil de poder Descobrir um mês anterior ou até mesmo um próximo mês.

Veja o exemplo:

<?php
// Descobrir Mês Anterior
  echo date('d/m/Y', strtotime('-1 months', strtotime(date('Y-m-d'))));
  // Resultado: 26/01/2014

// Descobrir Próximo Mês
  echo date('d/m/Y', strtotime('+1 months', strtotime(date('Y-m-d'))));
  // Resultado: 26/03/2014
?>

Bem simples, mas muito útil.


Gostou do post, continue por dentro das dicas de programação!!! Assine a newsletter.


E isso aí pessoal, até a próxima.

Tags:  Comandos PHP | PHP

Comentários

Sua foto do perfil

Norman

Este código funcionaria se for no mês de janeiro? por exemplo: estou dia 01-01-2015 e quero selecionar o mês anterior que seria 01-12-2014. estou tentando fazer este teste mas estou tendo dificuldade de entender nesta parte. estou fazendo um código que todo dia 01 execute uma query para selecionar todos os cadastros do mês anterior e enviar, mas tenho problemas de entender o comportamento nesta situação usando strtotime.
segue código:

$year = date('Y');
$month = date('m');
$get_subscribers = $db->get_results("
SELECT SQL_CALC_FOUND_ROWS
campo1,
campo2,
cad_data
FROM cadastros WHERE
MONTH(cad_data) = '$month' -1
AND YEAR(cad_data) = '$year'
, ARRAY_A);

03 de Fevereiro de 2016 - 10:16

Sua foto do perfil

Mauricio Programador

Olá Norman,

Da para fazer com esta função, mas se o que você quer e pegar os resultados de uma consulta do SQL do mês anterior o melhor seria usar o proprio SQL.

Veja o post Exibir Eventos dos Próximos 30 Dias (SQL)

Abraço.

05 de Fevereiro de 2016 - 15:30

Sua foto do perfil

paulo

belo post Mauricio. Vlw d+ pela dica

01 de Junho de 2015 - 21:31

Sua foto do perfil

Michael

Cuidado com essa abordagem.
Nos dias 29 (ano não bissexto), 30 e 31 de janeiro, a tentativa de se obter o próximo mês é falha.

Tente, por exemplo:

echo date('d/m/Y', strtotime('+1 months', strtotime('2015-01-29')));

Como não existe o dia 29/01/2015, será retornado 01/03/2015.

03 de Fevereiro de 2015 - 10:30

Sua foto do perfil

Deison

Olá, o que o Michel falou acima é um tanto equivocado, porque se não exite o dia 29, automaticamente, será adicionado o dia 1/3 mesmo.
Aí cabe ao programador usar um método que leve pro dia 28.
Mas de todo modo, a dica é válida e muito útil.

06 de Fevereiro de 2015 - 09:43

NEWSLETTER

Receba dicas de programação
em seu e-mail

TWITTER

Acompanhe tudo o que rola
com Mauricio Programador

NEWSLETTER