Python日期将多年日期跨度分隔为单年跨度

时间:2014-07-16 15:29:41

标签: python date

我不确定这是否是合适的标题,但我找不到更好的标题。

说我有一个日期范围:

 12 Nov 2012 - 15 May 2014

是否有一种简单的方法可以将此跨度分隔为单年跨度,如:

12 Nov 2012 - 31 Dec 2012
01 Jan 2013 - 31 Dec 2013
01 Jan 2014 - 15 May 2014

1 个答案:

答案 0 :(得分:5)

您可以轻松地将datetime.date个对象中表达的范围转换为一年内(start, end)个对象的序列:

from datetime import date

def year_boundaries(start, end):
    while start.year != end.year:
        yield start, date(start.year, 12, 31)
        start = date(start.year + 1, 1, 1)
    yield (start, end)

演示:

>>> for start, end in year_boundaries(date(2012, 11, 12), date(2014, 5, 15)):
...     print start, '-', end
... 
2012-11-12 - 2012-12-31
2013-01-01 - 2013-12-31
2014-01-01 - 2014-05-15