返回年份范围内的月份最后一天-Python
我有一些代码返回2017年每个月的最后一天 结果:返回年份范围内的月份最后一天-Python,python,date,Python,Date,我有一些代码返回2017年每个月的最后一天 结果: 2017-01-31 2017-02-28 2017-03-31 2017-04-30 2017-05-31 2017-06-30 2017-07-31 2017-08-31 2017-09-30 2017-10-31 2017-11-30 2017-12-31 然而,我想让它包括2014年到2017年,而不仅仅是2017年。我在网上找不到任何可以实现这一点的东西,我自己也没能弄明白。非常感谢所有的帮助/建议 这是我的密码: import a
2017-01-31
2017-02-28
2017-03-31
2017-04-30
2017-05-31
2017-06-30
2017-07-31
2017-08-31
2017-09-30
2017-10-31
2017-11-30
2017-12-31
然而,我想让它包括2014年到2017年,而不仅仅是2017年。我在网上找不到任何可以实现这一点的东西,我自己也没能弄明白。非常感谢所有的帮助/建议
这是我的密码:
import arcpy
import datetime
from datetime import timedelta
import time
import calendar
#returns last day of each month
def lastdayofmonth(anyday):
nextmonth = anyday.replace(day=28) + datetime.timedelta(days=4)
return next_month - datetime.timedelta(days=nextmonth.day)
for month in range(1, 13):
print (lastdayofmonth(datetime.date(2017, month, 1)))
只需为添加一个
,然后像处理月份一样在年份中循环:
for year in range(2014,2018):
for month in range(1, 13):
print (lastdayofmonth(datetime.date(year, month, 1)))
这可能是您想要的:
import calendar
{(k, m): calendar.monthrange(k, m)[1] for k in range(2014, 2018) for m in range(1, 13)}
# {(2014, 1): 31,
# (2014, 2): 28,
# (2014, 3): 31,
# etc
正如VIG所说,您可以按预期范围运行第二个循环到迭代器年。顺便说一句,我运行你的代码时出错了,说下个月<代码>没有定义。您的代码应按以下方式修复:
import datetime
from datetime import timedelta
import time
import calendar
#returns last day of each month
def lastdayofmonth(anyday):
nextmonth = anyday.replace(day=28) + datetime.timedelta(days=4)
return nextmonth - datetime.timedelta(days=nextmonth.day)
for j in range(2014,2018):
for month in range(1, 13):
print (lastdayofmonth(datetime.date(j, month, 1)))
可能重复的可能重复的欢迎使用SO。不幸的是,这不是一个讨论论坛或教程。请花点时间阅读该页面上的链接和其他链接。花些时间练习这些例子。它将让您了解Python提供的帮助您解决问题的工具。