Quem já precisou somar ou subtrair um dia, um mês ou ano em uma data?
Com certeza você já deve ter encontrado diversas soluções, das mais simples as mais mirabolantes.
A solução mais simples que encontrei até hoje foi utilizando a biblioteca relativedelta. Para manter a simplicidade dos posts não vou entrar em muitos detalhes, um código vale mais que mil palavras.
# Importamos as libs necessárias >>> import datetime >>> from dateutil.relativedelta import * >>> import calendar # Gravamos a data atual na variável hoje >>> hoje=datetime.datetime.today() >>> print(hoje) 2013-11-05 12:03:07.014243 # Adicionar um dia a hoje. >>> print(hoje + relativedelta(days=1)) 2013-11-06 12:03:07.014243 # Adicionar um mês a hoje. >>> print(hoje + relativedelta(months=1)) 2013-12-05 12:03:07.014243 # Adicionar um ano a hoje. >>> print(hoje + relativedelta(years=1)) 2014-11-05 12:03:07.014243 # Quanto tempo falta para o fim do ano? >>> fim_do_ano=datetime.date(2013,12,31) >>> print(relativedelta(fim_do_ano, hoje)) relativedelta(months=+1, days=+25, hours=+11, minutes=+56, seconds=+52, microseconds=+985757) # Qual a data da próxima sexta feira? >>> print(hoje+relativedelta(weekday=calendar.FRIDAY)) 2013-11-08 12:03:07.014243 # Ou assim: >>> print(hoje+relativedelta(weekday=FR)) 2013-11-08 12:03:07.014243 # Qual a data da segunda sexta feira, a partir de hoje? >>> print(hoje+relativedelta(weekday=FR(+2))) 2013-11-15 12:03:07.014243 # Descobrir a quanto tempo alguém está vivo com base na sua data de nascimento >>> nascimento=datetime.date(2000,1,1) >>> print(relativedelta(hoje, nascimento)) relativedelta(years=+13, months=+10, days=+4, hours=+12, minutes=+3, seconds=+7, microseconds=+14243)É isso ai pessoal, tem alguns outros exemplos na documentação, mas com isso já dá para perceber o potencial desta lib. Abraço a todos e até a próxima!
Nenhum comentário:
Postar um comentário