以列表形式获取日期之间的年和月差异
抱歉我的英语不好。
我有两个日期(DateTime):
latest_client = Client.objects.all().latest('id').ordered_at
first_client = Client.objects.order_by()[0].ordered_at
最新的客户时间是:2011-04-22 15:27:28 - latest_client
第一个客户时间是:2010-03-17 21:00:0 - first_client
我需要计算这两个日期之间的差距,并以年份和月份的列表形式呈现:
2011年(04,03,02,01)
2010年(12,11,10,09,08,07,06,05,04,03)
请给我一些建议,怎么做这个算法?
1 个回答
4
这里有一个生成器,它可以给你从开始到结束之间的每个月的日期(包括开始和结束的日期)
from datetime import date, datetime
def spanning_months(start, end):
assert start <= end
current = start.year * 12 + start.month - 1
end = end.year * 12 + end.month - 1
while current <= end:
yield date(current // 12, current % 12 + 1, 1)
current += 1
示例:
>>> latest = datetime(2011, 4, 22, 15, 27, 28)
>>> first = datetime(2010, 3, 17, 21, 0, 0)
>>> for d in spanning_months(first, latest):
... print d
2010-03-01
2010-04-01
2010-05-01
2010-06-01
2010-07-01
2010-08-01
2010-09-01
2010-10-01
2010-11-01
2010-12-01
2011-01-01
2011-02-01
2011-03-01
2011-04-01