Python - 从输入日期开始添加或减去 N *Business* 天
Python - Add OR Subtract N *Business* Days from Date Input
我正在尝试制作一个函数,将 或 减去 business 天的日期。我有一个包含以下内容的表格:
- 输入:DatePicker(日期时间)
- 输入:NumberOfDays (int)
- 按钮:CalendarDays/BusinessDays
- 输出:计算得出的最终日期
HURDLE: 我只能使用 datetime 和 timedelta - 没有 numpy,pandas 等。下面的代码有效,但是,它只适用于添加工作日.
目标: 如果可能,我想使用一个函数来计算 business 天,并使用正数或负数确定 business 天计算是加法还是减法的整数。下面的代码有效,但是,它只适用于正整数输入,并且只增加工作日。
非常感谢任何帮助。谢谢。
from datetime import datetime, timedelta
def bizday_calc_func(self, start_date, num_days):
my_start_date = start_date
my_num_days = num_days
while my_num_days > 0:
my_start_date += timedelta(days=1)
weekday = my_start_date.weekday()
if weekday >= 5:
continue
my_num_days -= 1
return my_start_date
似乎对您的日常工作稍作调整就可以解决问题:
from datetime import datetime, timedelta
def bizday_calc_func(self, start_date, num_days):
my_start_date = start_date
my_num_days = abs(num_days)
inc = 1 if num_days > 0 else -1
while my_num_days > 0:
my_start_date += timedelta(days=inc)
weekday = my_start_date.weekday()
if weekday >= 5:
continue
my_num_days -= 1
return my_start_date
免责声明:未经测试。
我正在尝试制作一个函数,将 或 减去 business 天的日期。我有一个包含以下内容的表格:
- 输入:DatePicker(日期时间)
- 输入:NumberOfDays (int)
- 按钮:CalendarDays/BusinessDays
- 输出:计算得出的最终日期
HURDLE: 我只能使用 datetime 和 timedelta - 没有 numpy,pandas 等。下面的代码有效,但是,它只适用于添加工作日.
目标: 如果可能,我想使用一个函数来计算 business 天,并使用正数或负数确定 business 天计算是加法还是减法的整数。下面的代码有效,但是,它只适用于正整数输入,并且只增加工作日。
非常感谢任何帮助。谢谢。
from datetime import datetime, timedelta
def bizday_calc_func(self, start_date, num_days):
my_start_date = start_date
my_num_days = num_days
while my_num_days > 0:
my_start_date += timedelta(days=1)
weekday = my_start_date.weekday()
if weekday >= 5:
continue
my_num_days -= 1
return my_start_date
似乎对您的日常工作稍作调整就可以解决问题:
from datetime import datetime, timedelta
def bizday_calc_func(self, start_date, num_days):
my_start_date = start_date
my_num_days = abs(num_days)
inc = 1 if num_days > 0 else -1
while my_num_days > 0:
my_start_date += timedelta(days=inc)
weekday = my_start_date.weekday()
if weekday >= 5:
continue
my_num_days -= 1
return my_start_date
免责声明:未经测试。