我不确定这是否是合适的标题,但我找不到更好的标题。
说我有一个日期范围:
12 Nov 2012 - 15 May 2014
是否有一种简单的方法可以将此跨度分隔为单年跨度,如:
12 Nov 2012 - 31 Dec 2012
01 Jan 2013 - 31 Dec 2013
01 Jan 2014 - 15 May 2014
答案 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