基本上我想要的是在下周或类似的格式之后有一周的日期,我虽然在这里找到了我需要的东西:
Find the date for the first Monday after a given a date
然而,测试代码证明它给出了一些我想要不同的答案:
import datetime
def next_weekday(d, weekday):
days_ahead = weekday - d.weekday()
if days_ahead <= 0: # Target day already happened this week
days_ahead += 7
return d + datetime.timedelta(days_ahead)
d = datetime.date(2017, 11, 30)
next_monday = next_weekday(d, 0) # 0 = Monday, 1=Tuesday, 2=Wednesday...
print(next_monday)
按预期正常工作,为next_weekday(d,0)
,1,2,3正确地提供日期,然后next_weekday(d,4)
我得到2017-12-01
我的系统解释为错误,因为this friday
等同2017-12-01
,而next friday
等于2017-12-08
等于星期六和星期日,所以基本上我想要的是如果我们正在寻找的星期几仍然在同一周给出日期那一周的那一天。
答案 0 :(得分:0)
你能不能总是将{7}添加到days_ahead
,而不仅仅是
&#34;目标日已经发生在本周&#34; 每次都要在下周获得一天:
import datetime
def next_weekday(d, weekday):
days_ahead = weekday - d.weekday() + 7
return d + datetime.timedelta(days_ahead)
d = datetime.date(2017, 11, 30)
next_friday = next_weekday(d, 4)
print(next_friday) # 2017-12-08 which is next week rather than the friday this week: 2017-12-01