【发布时间】:2011-01-14 13:09:52
【问题描述】:
我需要从当前日期中减去 工作日。
我目前有一些代码需要始终在最近的工作日运行。因此,如果我们是周一到周五,那可能是今天,但如果是周六或周日,那么我需要将其设置回周末前的周五。我目前有一些漂亮的笨拙代码来执行此操作:
lastBusDay = datetime.datetime.today()
if datetime.date.weekday(lastBusDay) == 5: #if it's Saturday
lastBusDay = lastBusDay - datetime.timedelta(days = 1) #then make it Friday
elif datetime.date.weekday(lastBusDay) == 6: #if it's Sunday
lastBusDay = lastBusDay - datetime.timedelta(days = 2); #then make it Friday
有没有更好的方法?
例如,我可以告诉 timedelta 在工作日而不是日历日工作吗?
【问题讨论】:
-
假期呢?
-
这里有一个来自 dzzone 的 sn-p,可能会对您有所帮助:snippets.dzone.com/posts/show/9173
-
是的,我已经在处理这些问题了:只要假期是在工作日,我的数据库总是会回填假期。但我同意,一般假期也是一个问题。我的意思是我可以开始花哨并使用 skits.timeseries 但我真的想要更简单的东西。
-
你好,我迟到了,对不起。 OP 可以做的一件更简单的事情是检查是否 datetime.date.weekday(lastBusDay) >=5 而不是分别检查周六和周日。但是是的..无论如何,下面还有其他更好的答案。
-
星期六和星期日不够通用,例如在某些国家/地区,例如以色列,工作周是周日至周四。