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.