Python 2.7从2个月前获得一个月(即从今天开始获得'05')

时间:2015-07-28 14:49:21

标签: python python-2.7 date datetime

我确信有一种简单的方法可以做到这一点,我错过了努力寻找答案。

基本上如何从n个月前获得月份数,即'05'或'04'?

道歉,如果这已经得到解答,但我在这里研究的问题无法回答我的问题。

修改

timedelta中没有月份参数,所以这没有回答我的问题。

马丁完美地回答了我的问题!

2 个答案:

答案 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