我确信有一种简单的方法可以做到这一点,我错过了努力寻找答案。
基本上如何从n个月前获得月份数,即'05'或'04'?
道歉,如果这已经得到解答,但我在这里研究的问题无法回答我的问题。
修改
timedelta中没有月份参数,所以这没有回答我的问题。
马丁完美地回答了我的问题!
答案 0 :(得分:7)
使用一些简单的模运算:
from datetime import date
def months_ago(count):
today = date.today()
return ((today.month - count - 1) % 12) + 1
演示:
>>> date.today()
datetime.date(2015, 7, 28)
>>> for i in range(13):
... print(months_ago(i))
...
7
6
5
4
3
2
1
12
11
10
9
8
7
答案 1 :(得分:3)
虽然Martijn的回答非常适合您的具体问题,但是对于那些偶然发现这个答案的人来说,寻找X个月前的约会,而不仅仅是个月的数字我会建议使用dateutil的亲戚。我发现它非常有用:
>>> from datetime import date
>>> from dateutil.relativedelta import relativedelta
>>> today = date.today()
datetime.date(2015, 7, 28)
>>> for i in range(13):
print(today - relativedelta(months=i))
2015-07-28
2015-06-28
2015-05-28
2015-04-28
2015-03-28
2015-02-28
2015-01-28
2014-12-28
2014-11-28
2014-10-28
2014-09-28
2014-08-28
2014-07-28