12月份出错。
ValueError:month必须在1..12
中
def last_day_of_month(ds):
cur_ds = datetime.strptime(ds, '%Y-%m-%d')
next_month = datetime(year=cur_ds.year, month=cur_ds.month+1, day=1)
last_day_month = next_month - timedelta(days=1)
return datetime.strftime(last_day_month, '%Y-%m-%d')
print last_day_of_month('2016-12-01')
答案 0 :(得分:2)
你不能在一个月13的时候制作一个datetime
。所以你必须找到一种解决方法。一个简单的解决方案是将递增的月份转换为额外的年份:
# Reduce 12 to 1, 0 and all other #s to 0, #
extrayear, month = divmod(cur_ds.month, 12)
# Add 1 or 0 to existing year, add one to month (which was reduced to 0-11)
next_month = datetime(year=cur_ds.year + extrayear, month=month + 1, day=1)
答案 1 :(得分:2)
在第3行month=cur_ds.month+1
,您提供的第13个月无效。如果您想计算给定月份的最后一天,您还可以使用日历库中的月份范围。
>>import calendar
>>year, month = 2016, 12
>>calendar.monthrange(year, month)[1]
31
答案 2 :(得分:0)
您将12
作为当月传递,然后添加一个获取next_month
,并将其设为13
。检查12
案例,然后设置month=1
。
答案 3 :(得分:0)
这就是我的方法。
x = int(input())
while 20 <= x <= 98:
print(x, end='\n')
if x % 11 == 0:
break
x -= 1
else:
print("Input must be 20-98")