每隔一个周末返回True,每隔一天返回False

2024-05-16 13:52:43 发布

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

我正在尝试制作一个每隔一个周末运行一次的脚本,为此我尝试使用datetime(我在互联网上也找到了一个解决方案),但它总是打印整个星期。你知道吗

from datetime import date, timedelta
reference_monday = date(2016, 1, 8)        # any monday of a "week one"

schedule = [[True, True, True, True, True, True, True],
            [True, True, True, True, True, False, False]]

def check_date(d):
    return schedule[abs(d - reference_monday).days / 7 % 2][d.weekday()]

start = date(2012, 6, 4)

for w in range(6):
    thisweek = start + timedelta(weeks=w)
    print 'week of', thisweek, ':',
    print ','.join(str(check_date(thisweek + timedelta(days=d))) for d in range(7))

它回来了

week of 2012-06-04 : True,True,True,True,True,True,True
week of 2012-06-11 : True,True,True,True,True,False,False
week of 2012-06-18 : True,True,True,True,True,True,True
week of 2012-06-25 : True,True,True,True,True,False,False
week of 2012-07-02 : True,True,True,True,True,True,True
week of 2012-07-09 : True,True,True,True,True,False,False

我希望它返回正确或错误,取决于当天。你知道吗


Tags: offalsetruefordatetimedatecheckdays
1条回答
网友
1楼 · 发布于 2024-05-16 13:52:43

如评论所述,有更好的替代方案来安排任务。你知道吗

这就是你想要的吗?你知道吗

def check_date(d):
    return not schedule[abs(d - reference_monday).days / 7 % 2][d.weekday()]

输出

week of 2012-06-04 : False,False,False,False,False,False,False
week of 2012-06-11 : False,False,False,False,False,True,True
week of 2012-06-18 : False,False,False,False,False,False,False
week of 2012-06-25 : False,False,False,False,False,True,True
week of 2012-07-02 : False,False,False,False,False,False,False
week of 2012-07-09 : False,False,False,False,False,True,True

I would like it to return either true or false, depending on that current day

start = date(2012, 6, 4)
for w in range(6):
    thisweek = start + timedelta(weeks=w)
    print 'week of', thisweek, ':',

    # Only Saturday and Sunday
    run_sat = check_date(thisweek + timedelta(days=5))
    run_sun = check_date(thisweek + timedelta(days=6))

    print "{:5} | {:5}".format(str(run_sat), str(run_sun))

输出

week of 2012-06-04 : False | False
week of 2012-06-11 : True  | True 
week of 2012-06-18 : False | False
week of 2012-06-25 : True  | True 
week of 2012-07-02 : False | False
week of 2012-07-09 : True  | True 

相关问题 更多 >