Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回年份范围内的月份最后一天-Python_Python_Date - Fatal编程技术网

返回年份范围内的月份最后一天-Python

返回年份范围内的月份最后一天-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年每个月的最后一天

结果:

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提供的帮助您解决问题的工具。