这是我在这里发表的第一篇文章,如果我做错了,请告诉我......
我希望从参考日期算起过去60个月的每个月的最后一天。
例如,如果参考日期是今天(2014年8月21日),那么最后一个月是2014年7月31日,之前的那个是2014年6月30日......
有没有人知道如何在python中执行此操作?
谢谢!
答案 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))