Módulos utilizados nesse post:
- date
- datetime
- timedelta
Esse post vai mostrar alguns exemplos simples de como utilizar o módulo datetime [1] para manipularmos, em Python, dados que representam datas. Antes de qualquer coisa, vou enumerar algumas operações que são corriqueiras quando precisamos lidar com datas:
- Obter a data atual;
- Obter a data antes ou após X dias da data atual;
- Calcular a diferença de dias entre duas datas;
- Descobrir o dia da semana em que determinada data cai;
Agora vamos ver como resolvê-las, usando o módulo datetime.
1. Obter a data atual
O módulo datetime possui dentro de si uma classe date [2] definida. Nessa classe, existem alguns métodos para manipulação de datas, como a função today, que retorna um objeto do tipo datetime.date.
>>> from datetime import date >>> hj = date.today() >>> print hj 2012-07-10 >>> print hj.day 10 >>> print hj.month 07 >>> print hj.year 2012
2. Obter a data há ou daqui a X dias
Para isso, iremos converter primeiramente a nossa data em um número ordinal, através do método toordinal(), que nos retorna a quantidade de dias passados desde o dia 1/1/1 até a data recebida como argumento. Depois disso, basta somar (ou subtrair) a esse número inteiro o número de dias da diferença que queremos calcular e então reconverter o inteiro para data, através do método fromordinal(). Abaixo, obtivemos a data a daqui exatos 45 dias.
>>> from datetime import date >>> hj = date.today() >>> print hj.toordinal() 734694 >>> futuro = date.fromordinal(hj.toordinal()+45) # hoje + 45 dias >>> print futuro 2012-08-24
3. Calcular a diferença de dias entre datas
Para realizar essa, vamos obter as duas datas entre as quais queremos saber o intervalo de dias e depois usar o operador de subtração (-) para fazer a operação. O operador subtração, quando aplicado a datas, retorna um objeto do tipo timedelta, contendo a diferença entre as datas. Esse objeto possui um atributo chamado days, que obviamente nos dá o número de dias representados pelo delta.
>>> from datetime import date >>> hj = date.today() >>> print hj.toordinal() 734694 >>> futuro = date.fromordinal(hj.toordinal()+45) # hoje + 45 dias</pre> >>> diferenca = futuro - hj >>> print diferenca.days 45
4. Descobrir o dia da semana de uma data
Essa é fácil. Após construir uma data, podemos chamar o método weekday() do objeto date. Ele retornará um número inteiro entre 0 (represendo segunda-feira) e 6 (representando domingo).
>>> from datetime import date >>> hj = date.today() >>> print hj.weekday() 1
>>> from datetime import date
>>> hj = date.today()
>>> dias = ('Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', 'Sábado', 'Domingo')
>>> print "Hoje é", dias[hj.weekday()]
Hoje é, Terça-feira
Os módulos datetime e date fazem muito mais do que o que foi mostrado aqui. Agora, acesse a documentação dos módulos e faça você mesmo alguns testes.
[1] http://docs.python.org/library/datetime.html
[2] http://docs.python.org/library/datetime.html#datetime.date