python中日期的迭代器

wai*_*kuo 3 python iterator date

我有一个begin_date datetime.date(2012, 9, 1)和一个end_datedatetime.date(2012, 9, 30)

我想获得一个迭代器或列表,其中包括日期2012/9/1至2012/9/30.除了循环之外的任何其他方式都可以使迭代器或列表

Mar*_*ers 10

使用发电机:

from datetime import date, timedelta

def dategenerator(start, end):
    current = start
    while current <= end:
        yield current
        current += timedelta(days=1)
Run Code Online (Sandbox Code Playgroud)

演示:

>>> for dt in dategenerator(date(2012, 9, 1), date(2012, 9, 30)):
...     print dt
... 
2012-09-01
2012-09-02
2012-09-03
2012-09-04
2012-09-05
2012-09-06
2012-09-07
2012-09-08
2012-09-09
2012-09-10
2012-09-11
2012-09-12
2012-09-13
2012-09-14
2012-09-15
2012-09-16
2012-09-17
2012-09-18
2012-09-19
2012-09-20
2012-09-21
2012-09-22
2012-09-23
2012-09-24
2012-09-25
2012-09-26
2012-09-27
2012-09-28
2012-09-29
2012-09-30
Run Code Online (Sandbox Code Playgroud)


roo*_*oot 5

如果没有隐式循环,您可以执行以下操作:

from datetime import date
from dateutil.rrule import rrule, DAILY

iterdates=iter(rrule(DAILY, dtstart=date(2012, 9, 1), until=date(2012, 9, 30)))
Run Code Online (Sandbox Code Playgroud)