Adicionar um mês a uma data em Python

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!

Sobre guevara2012
Sou Analista de Sistemas e Desenvolvedor Web em Java e Python. Gosto de aprender novas tecnologias e estar antenado com os acontecimentos no mundo.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.