在Python中查找本月的第三个星期四

在Python中查找本月的第三个星期四,python,date,Python,Date,我需要确定今天是否是本月的第三个星期四。使用Python实现这一点的有效方法是什么?我会这样做: from datetime import datetime today = datetime.today() is_third_thurs = today.weekday() == 3 and today.day >= 15 and today.day <= 21 从日期时间导入日期时间 今天=日期时间。今天() 是第三个星期四=今天。工作日()==3和今天.day>=15和今天.da

我需要确定今天是否是本月的第三个星期四。使用Python实现这一点的有效方法是什么?

我会这样做:

from datetime import datetime
today = datetime.today()
is_third_thurs = today.weekday() == 3 and today.day >= 15 and today.day <= 21
从日期时间导入日期时间
今天=日期时间。今天()
是第三个星期四=今天。工作日()==3和今天.day>=15和今天.day我会做一些类似的事情:

from datetime import datetime
today = datetime.today()
is_third_thurs = today.weekday() == 3 and today.day >= 15 and today.day <= 21
从日期时间导入日期时间
今天=日期时间。今天()

在@inegm的回答之后,您可以使用
日历
模块解决您的问题:

def is_nth_weekday(daynum, nth):
    if date(date.today().year, date.today().month, 1).weekday() == daynum:
        nth = nth - 1
    return date.today() == calendar.Calendar(daynum).monthdatescalendar(
        date.today().year, 
        date.today().month
    )[nth][0]

表达式
calendar.calendar(n).monthdatescalendar(date.today().year,date.today().month)[daynum][0]
返回一个datetime对象,该对象对应于一周中出现的
n
天数。在您的情况下,您可能希望在工作日(3,3)
(因为从星期一算起,星期四是
3
)。

按照@inegm的回答,您可以使用
日历
模块来解决您的问题:

def is_nth_weekday(daynum, nth):
    if date(date.today().year, date.today().month, 1).weekday() == daynum:
        nth = nth - 1
    return date.today() == calendar.Calendar(daynum).monthdatescalendar(
        date.today().year, 
        date.today().month
    )[nth][0]

表达式
calendar.calendar(n).monthdatescalendar(date.today().year,date.today().month)[daynum][0]
返回一个datetime对象,该对象对应于一周中出现的
n
天数。在你的情况下,你想打电话给
是工作日(3,3)
(因为从周一算起
0
,周四是
3
)。

你自己试过什么吗?你自己试过什么吗?应该是
你是对的!我编辑了答案,谢谢你的更正。
是第三个星期四=今天。工作日()==3和15 Whaaaaaaa?我不知道你可以在Python中这样做。每天学习新的东西。谢谢Padraics不是吗
你说得对!我编辑了答案,谢谢你的更正。
是第三个星期四=今天。工作日()==3和15 Whaaaaaaa?我不知道你可以在Python中这样做。每天学习新的东西。谢谢Padraic+1。此解决方案是干净的,使用默认库,不依赖于幻数,并且不太容易出现“关一”错误。+1。此解决方案是干净的,使用默认库,不依赖幻数,并且不太容易出现一对一错误。