Python中最近的前一个工作日

2024-04-23 11:00:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要从当前日期中减去个工作日

我现在有一些代码需要总是在最近的工作日运行。如果我们是周一到周五,那可能是今天,但如果是周六或周日,我需要把它放回周末之前的周五。我现在有一些相当笨拙的代码来执行此操作:

 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在工作日而不是日历日工作吗?


Tags: 代码todaydatetimedatemakeifitdays
3条回答

用熊猫!

import pandas as pd
# BDay is business day, not birthday...
from pandas.tseries.offsets import BDay

# pd.datetime is an alias for datetime.datetime
today = pd.datetime.today()
print today - BDay(4)

因为今天是9月26日星期四,这将为您提供以下输出:

datetime.datetime(2013, 9, 20, 14, 8, 4, 89761)

如果您愿意安装额外的库,似乎有几个选项。

本文描述了用dateutil定义工作日的方法。

http://coding.derkeiler.com/Archive/Python/comp.lang.python/2004-09/3758.html

BusinessHours允许您自定义假日列表等,以定义您的工作时间(以及延长的工作日)。

http://pypi.python.org/pypi/BusinessHours/

光盘制作者:我是作者。。。

我写了一个软件包来计算商业日期。您可以使用自定义周规格和假日。

我在处理财务数据时遇到了这个问题,没有发现任何可用的解决方案特别容易,所以我写了一个。

希望这对其他人有用。

https://pypi.python.org/pypi/business_calendar/

相关问题 更多 >