我正在尝试制作一个python程序,该程序将计算从过去某天到今天的第7个星期一。
这是我到目前为止所拥有的。
from datetime import date
def num_day(past_Date):
# this is the total number of specific date between the years
sum(date(year, month, 7).weekday() == 0
for year in range(past_Date.year, date.today().year + 1) for month in range(1, 13))
现在这是我的问题
让我们说past_date是date(1945,11,6),今天是date(2018,11,6)
我该如何减去/添加实际日期范围之间不存在的星期一多余的/多余的计数?
这个难题困扰了我好几个小时,我似乎找不到出路。
答案 0 :(得分:1)
我认为更好的方法是从past_date
迭代到今天,同时将所有匹配项保存在列表中。这是我的方法
from datetime import date
from datetime import timedelta
def num_day(past_date, my_day, my_weekday):
dates = []
while past_date <= date.today():
if past_date.weekday() == my_weekday and past_date.day == my_day:
dates.append(past_date)
past_date = past_date + timedelta(days=1)
return dates
def main():
dates = num_day(past_date = date(1945, 11, 6), my_day = 7, my_weekday = 0)
print(dates)
if __name__ == '__main__':
main()
请记住,my_weekday
必须介于0到6之间。否则,请使用date.isoweekday()
而不是date.weekday()
。