Python 如果日期为工作日,则获取当前日期,否则获取最近一个工作日(即星期五)的日期

Python 如果日期为工作日,则获取当前日期,否则获取最近一个工作日(即星期五)的日期,python,python-2.7,datetime,Python,Python 2.7,Datetime,有人能想出一个优雅的单班轮吗 我的尝试: dt.datetime.today() if dt.datetime.today().isoweekday() in range(1, 6) else 'date of last friday?' 我想要两行,虽然一行是可能的。原因是如果您调用dt.datetime.today()两次,那么如果在午夜前的一瞬间运行,您得到两个不同答案的可能性(非常小)。此外,存储值可能比调用函数两次更有效 import datetime as dt thisday

有人能想出一个优雅的单班轮吗

我的尝试:

dt.datetime.today() if dt.datetime.today().isoweekday() in range(1, 6) else 'date of last friday?'

我想要两行,虽然一行是可能的。原因是如果您调用dt.datetime.today()两次,那么如果在午夜前的一瞬间运行,您得到两个不同答案的可能性(非常小)。此外,存储值可能比调用函数两次更有效

import datetime as dt

thisday = dt.datetime.today().date()
thisday -= dt.timedelta(days=max(0,thisday.weekday()-4,0))

周六和周日()返回5,周日返回6,所以我们分别减去1天或2天。在其他日子,weekday()-4等于或小于零,因此max函数返回零,不减去任何值

很好的解决方案和你选择两行的理由改变了我的想法。谢谢