Adicionar um mês a uma data em Python
setembro 7, 2011 Deixe um comentário
Oi pessoal!
Estava aqui testando os recursos das classes datetime do Python para criar um módulo de pagamentos e surgiu a necessidade de acrescentar um mês a uma data para calcular o próximo vencimento.
Ao pesquisar na internet me deparei com dicas deste tipo:
import datetime
from datetime import timedelta
transacao = datetime.date(2011,1,30)
vencimento = transacao + timedelta(days=30)
print transacao.strftime("%d-%m-%Y")
print vencimento.strftime("%d-%m-%Y")
# saída
30-01-2011
01-03-2011
Nunca faça isto, pois os meses possuem 30 ou 31 dias, além de fevereiro que possui 28 dias.
Para resolver isto, existe uma classe específica para este tipo de cálculo, veja:
import datetime
from dateutil.relativedelta import relativedelta
transacao = datetime.date(2011,1,30)
vencimento = transacao + relativedelta(months=+1)
print transacao.strftime("%d-%m-%Y")
print vencimento.strftime("%d-%m-%Y")
# saída
30-01-2011
28-02-2011
O timedelta trabalha com milisegundos até weeks, então se for calcular datas ou tempo está valendo,
desde que não se trate de cálculos para datas de vencimento.
Até a próxima!