2014-10-02 269 views

回答

1

我会做这样的事情:

from datetime import datetime 
today = datetime.today() 
is_third_thurs = today.weekday() == 3 and today.day >= 15 and today.day <= 21 

基本上,如果今天是周四,这还不算太晚或太早它是第三个星期四,那么今天一定是第三个星期四。

+1

它不应该是'<= 21'吗?如果我的数学没有错,22日可能是第四个星期四。 – 2014-10-02 17:53:33

+0

你是对的!我编辑了答案,谢谢你的更正。 – 2014-10-02 17:55:48

+1

'is_third_thurs = today.weekday()== 3和15 <= today.day <= 21' – 2014-10-02 17:57:55

3

this post @ inegm的回答,您可以使用calendar模块来解决问题:

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(nth).monthdatescalendar(date.today().year, date.today().month)[daynum][0]返回对应nth occurence的daynum天一周的日期时间对象。在你的情况下,你想打电话is_nth_weekday(3, 3)(因为从星期一开始计为0,周四是3)。

+0

+1。这个解决方案是干净的,使用默认的库,并且不依赖于幻数,并且不太容易出现逐个错误。 – Tiago 2014-10-02 18:00:16

相关问题