如果日期是周末自动重新运行该功能

2024-09-25 02:35:56 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我可以在给定的开始-结束日期关系中生成随机日期,但是,如果该日期恰好是周末-当前我所能做的就是打印给用户“Itisabweekend”。我想做的是,如果随机的一天是周末,重新运行该功能,这样用户就不必手动。基本上-只打印工作日-当前,如果随机日是周末,则打印一个空格或None值。只返回/打印工作日是主要目标

以下是迄今为止的代码:

from datetime import datetime, timedelta
from random import randrange

def random_date(start, end):
    delta = end - start
    random_day = randrange(delta.days)
    myresult = start + timedelta(days=random_day)
    return myresult

d1 = datetime.strptime('9/1/2018', '%m/%d/%Y')
d2 = datetime.strptime('9/30/2018', '%m/%d/%Y')
myresult = random_date(d1, d2)

if myresult.weekday() not in (5, 6):
    print myresult.strftime('%m-%d-%Y')
else:
    print "hit a weekend"

Tags: 用户fromimportdatetimedaterandomdaysstart
2条回答

因此,您需要一个while循环来不断获取日期,直到您得到一个不是周末的日期,如下所示:

from datetime import datetime
from random import randrange
from datetime import timedelta

def random_date(start, end):
    delta = end - start
    random_day = randrange(delta.days)
    myresult = start + timedelta(days=random_day)
    return myresult

    while True:

        d1 = datetime.strptime('9/1/2018', '%m/%d/%Y')
        d2 = datetime.strptime('9/30/2018', '%m/%d/%Y')
        myresult = random_date(d1, d2)

        if myresult.weekday() not in (5,6):
            break

    print myresult.strftime('%m-%d-%Y')

一个选项:

def random_weekday(start, end):
    date = None

    while (not date or date.weekday() in (5, 6)):
        days = randrange((end - start).days)
        date = start + timedelta(days=days)

    return date

start = datetime.strptime('9/1/2018', '%m/%d/%Y')
end = datetime.strptime('9/30/2018', '%m/%d/%Y')

for i in range(20):
  print(random_weekday(start, end).strftime('%m-%d-%Y'))

相关问题 更多 >