Step1:获取指定年份中的所有日期,返回一个二维列表;
Step2:根据Step1返回的二维列表,筛选出指定周几的日期,返回一个列表;
Step3:将筛出的日期写入到文件中。
import calendar
import datetime
import csv
def getAllDayList(year):
'''获取指定年份的所有日期,返回一个二维列表'''
cal = calendar.Calendar()
alldaylist = []
for month in list(range(1,13)):
listday = []
#调用calendar类的itermonthdays()方法,返回一个迭代器,含有指定年月的日子
for day in cal.itermonthdays(year,month):
#过滤迭代器中用于填充首尾的0
if day != 0:
listday.append(day)
alldaylist.append(listday)
return alldaylist
def getdaydate(year,alldaylist,zj):
'''获取指定周几的所有日期'''
filterdate = []
for month in list(range(1,13)):
for day in alldaylist[month - 1]:
date = datetime.date(year,month,day)
#调用datetime类的isoweekday()方法,过滤出指定周几的日期
if date.isoweekday() == zj:
tmpstr = str(date.year) + "," + str(date.month) + "," + str(date.day)
filterdate.append(tmpstr)
return filterdate
def writeintocsv(filterdate):
'''将筛出的日期写入csv文件'''
tmp = []
with open("HuoQuRiQi.csv",'w',newline='') as f:
opw = csv.writer(f,delimiter=",")
for i in filterdate:
tmp = i.split(',')
opw.writerow(tmp)
def writeintotxt(filterdate):
'''将筛出的日期写入txt文件'''
with open("HuoQuRiQi.txt",'w') as f:
for i in filterdate:
f.write(i+"\n")
if __name__ == '__main__':
year = int(input("年份(四位数字):"))
zhouji = int(input("周几(填数字1到7)?"))
zjdate = getdaydate(year,getAllDayList(year),zhouji)
writeintocsv(zjdate)
writeintotxt(zjdate)
主要功能为使用datetime类生成一个包含指定年份所有日期的列表;
datetime类的itermonthdays()方法会在月的首尾空白的地方填充“0”,需要过滤掉。
def getAllDayList(year):
'''获取指定年份的所有日期,返回一个二维列表'''
cal = calendar.Calendar()
alldaylist = []
for month in list(range(1,13)):
listday = []
#调用calendar类的itermonthdays()方法,返回一个迭代器,含有指定年月的日子
for day in cal.itermonthdays(year,month):
#过滤迭代器中用于填充首尾的0
if day != 0:
listday.append(day)
alldaylist.append(listday)
return alldaylist
主要功能为从所有日期中筛选出指定星期几的日期;
关键是datetime类的isoweekday()方法。
def getdaydate(year,alldaylist,zj):
'''获取指定周几的所有日期'''
filterdate = []
for month in list(range(1,13)):
for day in alldaylist[month - 1]:
date = datetime.date(year,month,day)
#调用datetime类的isoweekday()方法,过滤出指定周几的日期
if date.isoweekday() == zj:
tmpstr = str(date.year) + "," + str(date.month) + "," + str(date.day)
filterdate.append(tmpstr)
return filterdate
写csv文件,方便用excel查看。
def writeintocsv(filterdate):
'''将筛出的日期写入csv文件'''
tmp = []
with open("HuoQuRiQi.csv",'w',newline='') as f:
opw = csv.writer(f,delimiter=",")
for i in filterdate:
tmp = i.split(',')
opw.writerow(tmp)
顺手写进txt文件,暂时没想到有什么用。
def writeintotxt(filterdate):
'''将筛出的日期写入txt文件'''
with open("HuoQuRiQi.txt",'w') as f:
for i in filterdate:
f.write(i+"\n")