我正在尝试制作一个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))
现在这是我的问题
假设过去日期是日期(1945, 11, 6),今天是日期(2018, 11, 6)
如何减去/添加实际日期范围之间不存在的第 7 周一星期一的多余/缺少计数?
这个难题困扰了我好几个小时,我似乎找不到出路。
我认为更好的方法是从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()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句