Python过去60个月结束

时间:2014-08-21 16:24:53

标签: python datetime

这是我在这里发表的第一篇文章,如果我做错了,请告诉我......

我希望从参考日期算起过去60个月的每个月的最后一天。

例如,如果参考日期是今天(2014年8月21日),那么最后一个月是2014年7月31日,之前的那个是2014年6月30日......

有没有人知道如何在python中执行此操作?

谢谢!

2 个答案:

答案 0 :(得分:4)

这是一种更简单/更清洁的方式,可以使用datetime模块:

>>> import datetime
>>> def prevMonthEnd(startDate):
...    ''' given a datetime object, return another datetime object that
...        is set to the last day of the prevoius month '''
...    firstOfMonth = startDate.replace(day=1)
...    return firstOfMonth - datetime.timedelta(days=1)
...
>>> theDate = datetime.date.today()
>>> for i in range(60):
...    theDate = prevMonthEnd(theDate)
...    print theDate
...
2014-07-31
2014-06-30
2014-05-31
2014-04-30
2014-03-31
2014-02-28
2014-01-31
2013-12-31
(etc.)

答案 1 :(得分:0)

想出来:

    import calendar

    m = int(raw_input("m: "))
    y = int(raw_input("y: "))

    meArr = []
    monthsleft = 60

    for i in range(1,int(m)):
    meArr = meArr + [str(calendar.monthrange(y,i)[1]) + '.' + str(i) + '.' +         str(y)]
    monthsleft = monthsleft - len(meArr)


    while monthsleft > 0:
        if monthsleft >= 12:
            y = y - 1
            for i in range(12,0,-1):
                meArr = [str(calendar.monthrange(y,i)[1]) + '.' + str(i) + '.' +         str(y)] + meArr
        else:
            y = y - 1
            for i in range(12,m-1,-1):
                meArr = [str(calendar.monthrange(y,i)[1]) + '.' + str(i) + '.' + str(y)] + meArr
        monthsleft = monthsleft - 12
    ##    print(len(meArr))