我有以下代码:
from datetime import date
from datetime import timedelta
today = datetime.date.today()
for i in range(0,7):
print (today - timedelta(days=i))
2018-10-31
2018-10-30
2018-10-29
2018-10-28
2018-10-27
2018-10-26
2018-10-25
我要打印的只是工作日,不包括周末。所以,我想要的结果应该是:
2018-10-31
2018-10-30
2018-10-29
2018-10-26
2018-10-25
2018-10-24
2018-10-23
在哪里可以修改我的代码以获得预期的结果?
答案 0 :(得分:4)
使用datetime.date.weekday()
,其中:
将星期几作为整数返回,其中星期一为0,星期日为6。
<label for="select-id">
产生:
2018-10-31 2018-10-30 2018-10-29 2018-10-26 2018-10-25
这为您提供了过去7天中的工作日。或者,如果您想在过去的7个工作日内考虑,
from datetime import date
from datetime import timedelta
today = date.today()
for i in range(7):
d = today - timedelta(days=i)
if d.weekday() < 5: # Here
print(d)
此版本基本相同,范围范围从7更改为10,并添加了from datetime import date
from datetime import timedelta
today = date.today()
num_weekdays = 0
for i in range(10):
d = today - timedelta(days=i)
if d.weekday() < 5:
print(d)
num_weekdays += 1
if num_weekdays >= 7:
break
计数器。当我们打印日期时,我们会增加计数器,一旦达到7,我们就会中断循环(否则,我们可能会打印8个日期,具体取决于num_weekdays
的星期几)。
或者,另一种方式:
today
类似的想法,我们创建了一个名为from datetime import date
from datetime import timedelta
today = date.today()
prev_days = [today - timedelta(days=i) for i in range(10)] # Get 10 previous days
prev_days = [d for d in prev_days if d.weekday() < 5] # Filter out the weekends
for d in prev_days[:7]: # Select the first 7
print(d)
的10个先前日期的列表。然后,我们通过过滤掉周末日期来过滤该列表。然后,在for循环中,我们仅循环遍历过滤列表的前7个元素,这样我们最多可以打印7个日期。