返回年份的最后一天 - Python

时间:2018-01-29 15:28:36

标签: 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 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)))

3 个答案:

答案 0 :(得分:0)

只需添加一个for循环,然后循环显示这些年份:

for year in range(2014,2018):
    for month in range(1, 13):
        print (lastdayofmonth(datetime.date(year, month, 1)))

答案 1 :(得分:0)

这可能是你想要的:

<IfModule mod_ibm_ssl.c>
  Listen 0.0.0.0:443
  <VirtualHost *:443>

    SSLEnable

    RewriteEngine On

    Alias "/images" "C:\IBM\HTTPServer\htdocs\images"
    RewriteRule "/images/(.+)\.png$" "/images/$1.png" [PT]

    RewriteCond %{DOCUMENT_ROOT}/serverdown.txt -f 
    RewriteRule ^(.*)$ /404maintenance.html [PT,NC]

  </VirtualHost>
</IfModule>

答案 2 :(得分:0)

正如 VIG 所说,你可以运行第二个循环到迭代器年份作为你的预期范围。顺便说一句,我运行你的代码出错,说next_month没有定义。您的代码应修复如下:

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)))