Digamos que eu tenha uma data no seguinte formato: 2010-12-11 (ano-segunda-feira)
Com o PHP, quero aumentar a data em um mês e quero que o ano seja incrementado automaticamente, se necessário (ou seja, incrementando de dezembro de 2012 a janeiro de 2013).
Saudações.
Eu precisava de funcionalidade semelhante, exceto para um ciclo mensal (mais meses, menos 1 dia). Depois de pesquisar o SO por um tempo, consegui criar esta solução plug-n-play:
Exemplo:
fonte
Use
DateTime::add
.Usei clone porque add modifica o objeto original, o que pode não ser desejado.
fonte
isso retorna um carimbo de data / hora que pode ser usado com a função de data
fonte
$time
tem um valor inicial).Isso compensará fevereiro e os outros meses de 31 dias. É claro que você poderia fazer muito mais verificações para obter mais exatidão para os formatos de data relativa 'neste dia no próximo mês' (o que infelizmente não funciona, veja abaixo), e você também poderia usar DateTime.
Ambos
DateInterval('P1M')
estrtotime("+1 month")
estão essencialmente adicionando às cegas 31 dias, independentemente do número de dias no mês seguinte.fonte
Você pode usar
DateTime::modify
assim:Veja a documentação:
http://php.net/manual/fr/datetime.modify.php
http://php.net/manual/fr/class.datetime.php
fonte
Eu uso desta forma: -
fonte
Por favor, primeiro você define seu formato de data como 12-12-2012
Depois de usar esta função ela funcionará corretamente;
Aqui 12-12-2012 é a sua data e +2 meses é o incremento do mês;
Você também incrementa de ano, data
Ans é 12-12-2013
fonte
Obrigado Jason, seu post foi muito útil. Reformatei e adicionei mais comentários para me ajudar a entender tudo. Caso isso ajude alguém, eu postei aqui:
fonte
Se você quiser aumentar em dias, você também pode fazer isso
fonte
Basta atualizar a resposta com método simples para encontrar a data após no de meses. Pois a melhor resposta marcada não dá a solução correta.
fonte
Exemplos de uso:
fonte
Para quem procura uma resposta em qualquer formato de data.
Basta alterar o formato da data.
fonte
coloque uma data na caixa de entrada e clique no botão obter o dia da data no jquery
fonte
fonte
Todas as soluções apresentadas não estão funcionando corretamente.
strtotime () e DateTime :: add ou DateTime :: modify fornecem alguns resultados inválidos.
Exemplos:
- 31.08.2019 + 1 mês resulta em 01.10.2019 em vez de 30.09.2019
- 29.02.2020 + 1 ano resulta em 01.03.2021 em vez de 28.02.2021
(testado em PHP 5.5, PHP 7.3)
Abaixo está minha função baseada na ideia postada por Ângelo que resolve o problema:
Exemplos de uso:
fonte