associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

Revisão 3e 2008-09-26 14:07:53

Excluir mensagem

DateTimeRange

Receita: DateTime range

Generator para iterar numa faixa de tempo. Usa um timedelta como "passo". Codigo escrito por um co-worker (obrigado!)

Código

   1 def datetime_range(start, stop, timedelta_args=None):
   2     if timedelta_args is None:
   3         td = timedelta(days=1)
   4     else:
   5         try:
   6             td = timedelta(timedelta_args)
   7         except TypeError:
   8             try:
   9                 td = timedelta(*timedelta_args)
  10             except TypeError:
  11                 try:
  12                     td = timedelta(**timedelta_args)
  13                 except TypeError:
  14                     pass
  15 
  16     while start <= stop:
  17         yield start
  18         start = start + td

Exemplo de uso

   1 from datetime import date, datetime, timedelta
   2 
   3 birth = date(1984, 10, 02)
   4 
   5 today = datetime.now()
   6 
   7 step = timedelta(365)
   8 
   9 for birthday_party in datetime_range(birthday, today, step):
  10     # verificar se o ano anterior é bissexto e somar um dia:
  11     # deixado como exercicio para o leitor (é facil, gente!)
  12     print birthday_party
  13     good_party = raw_input('Was this a good birthday party? (y/n) ')
  14     if good_party.lower() == 'n':
  15         print 'Poor child!'

Volta para CookBook.


EduardoDeOliveiraPadoan