sexta-feira, 12 de dezembro de 2014

Manipular semanas com Python

Olá pessoal tudo bem por ai? Faz tempo que eu não atualizava o blog, muitas atividades extra classe e no trampo =D. Inclusive hoje vou falar sobre um assunto no qual tive que utilizar em meu serviço. Trata-se do cálculo de datas com Python, mais especificamente cálculo entre semenas com Python.

O problema era o seguinte, eu tinha que retroceder 12 semanas apartir da data atual, se você nunca manipulou datas em Python já lhe adianto que é muito simples assim como tudo que existe em Python.

Vamos começar a por a mão na massa? Primeira coisa que temos que fazer é recuperar a data atual do sistema:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/usr/bin/python

from datetime import datetime

today = datetime.now()

print 'Data atual do sistema: %s' % today

# imprimindo por extenso
print 'Data atual do sistema: %s' % today.strftime('%A, %d of %B of %Y')

Agora que temos a data atual, vamos recuperar o primeiro e último dia da semana atual. Para fazer cálculos de forma simples com Python temos o módulo timedelta.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/usr/bin/python
# coding: utf-8

from datetime import datetime
from datetime import timedelta

today = datetime.now()
first_day = today - timedelta(days=today.isoweekday())
last_day = first_day + timedelta(days=6)

print u'primeiro dia %s' % first_day
print u'último dia %s' % last_day

Show de bola, muito fácil até o momento. Agora precisamos regredir doze semanas da data atual, isso pode ser feito da mesma forma que foi utilizada com os dias, mas agora ao invés de dias vamos subtrair semanas. Lembrando que vamos considerar a semana atual como sendo uma semana dentro do intervalo.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/usr/bin/python
# coding: utf-8

from datetime import datetime
from datetime import timedelta

today = datetime.now()
first_date = today - timedelta(days=today.isoweekday())
twelve_week = first_date - timedelta(weeks=11)

print 'Doze semanas atrás: %s' % twelve_week
print 'Por extenso: %s' % twelve_week.strftime('%A, %d of %B of %Y')

Com isso eu resolvi o meu problema de voltar semanas utilizando apenas as baterias inclusas do Python.

Até a próxima galerinha, se tiverem dúvidas deixem comentários que responderei!

Novidade!!! Agora vamos ter canal no Youtube =D

Fala pessoal tudo beleza, estou sumido a correria está forte por aqui. Estou querendo dar um start em um projeto antigo que vem desde o temp...