仅打印与工作日相对应的上周日期
Print last week dates only corresponding to weekdays
我有以下代码:
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
我在哪里可以修改我的代码以达到预期的结果?
使用datetime.date.weekday()
,其中:
Return the day of the week as an integer, where Monday is 0 and Sunday is 6.
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)
产生:
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()
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 变为 10,并添加了 num_weekdays
计数器。我们在打印日期时增加计数器,一旦达到 7,我们就打破循环(否则我们可能会打印 8 个日期,具体取决于 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 个先前日期的列表,称为 prev_days
。然后我们通过过滤掉周末日期来过滤该列表。然后,在 for 循环中,我们只循环过滤列表的前 7 个元素,这样我们最多打印 7 个日期。
我有以下代码:
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
我在哪里可以修改我的代码以达到预期的结果?
使用datetime.date.weekday()
,其中:
Return the day of the week as an integer, where Monday is 0 and Sunday is 6.
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)
产生:
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()
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 变为 10,并添加了 num_weekdays
计数器。我们在打印日期时增加计数器,一旦达到 7,我们就打破循环(否则我们可能会打印 8 个日期,具体取决于 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 个先前日期的列表,称为 prev_days
。然后我们通过过滤掉周末日期来过滤该列表。然后,在 for 循环中,我们只循环过滤列表的前 7 个元素,这样我们最多打印 7 个日期。