使用python获取当月的最后一个星期四

Fra*_*ash 4 python datetime python-dateutil

按照这个答案,我试图获取当月最后一个星期四的日期。但是我的代码没有跳出循环。

from datetime import datetime
from dateutil.relativedelta import relativedelta, TH

todayte = datetime.today()
cmon = todayte.month

nthu = todayte
while nthu.month == cmon:
    nthu += relativedelta(weekday=TH(1))
    #print nthu.strftime('%d%b%Y').upper()
Run Code Online (Sandbox Code Playgroud)

AKS*_*AKS 5

查看文档 relativedelta

请注意,如果计算出的日期已经是Monday,例如,使用(0, 1)或(0, -1)不会更改日期。

如果nthu已经是星期四,则添加TH(1)或TH(-1)不会产生任何效果,但会导致相同的日期,这就是您的循环无限运行的原因。

我将假设一个月最多 5 周,并按照以下方式进行:

todayte = datetime.today()
cmon = todayte.month

for i in range(1, 6):
    t = todayte + relativedelta(weekday=TH(i))
    if t.month != cmon:
        # since t is exceeded we need last one  which we can get by subtracting -2 since it is already a Thursday.
        t = t + relativedelta(weekday=TH(-2))
        break
Run Code Online (Sandbox Code Playgroud)