当前位置: 首页 > 面试题库 >

在给定日期中添加n个工作日,而忽略python中的假期和周末

逑阳泽
2023-03-14
问题内容

我正在尝试将n个(整数)工作日添加到给定的日期,添加日期必须避免假期和周末(工作日中不包括该日期)


问题答案:

跳过周末很容易做到这一点:

import datetime
def date_by_adding_business_days(from_date, add_days):
    business_days_to_add = add_days
    current_date = from_date
    while business_days_to_add > 0:
        current_date += datetime.timedelta(days=1)
        weekday = current_date.weekday()
        if weekday >= 5: # sunday = 6
            continue
        business_days_to_add -= 1
    return current_date

#demo:
print '10 business days from today:'
print date_by_adding_business_days(datetime.date.today(), 10)

假期的问题在于假期因国家或地区,宗教信仰等的不同而有很大差异。您需要为用例提供一份假期清单/一套,然后以类似的方式跳过它们。一个起点可能是苹果为iCal发布的日历供稿(以ics格式),而在美国的日历供稿则是http://files.apple.com/calendars/US32Holidays.ics。

您可以使用icalendar模块进行解析。



 类似资料:
  • 问题内容: 我正在寻找将给定日期增加工作日数的功能。 假期表 包含假期。另外,星期六和星期日均为非营业日。 我试图创建功能 但是它有时返回不正确的结果: 返回2018-12-10, 但正确的结果是2018-12-11 如何在Postgres 9.1+中创建这样的功能? 问题答案: 关键是生成一系列工作日,并用以下编号对它们进行编号: 测试查询的结果似乎正确: 或者,您可以在循环中找到日期:

  • 问题内容: 如何将n小时添加到Date对象?我找到了另一个在StackOverflow上使用几天的示例,但仍然不知道如何使用小时。 问题答案: 检查日历类。它具有(和其他一些)允许时间操纵的方法。这样的事情应该起作用。

  • 我有以下类: 枚举日: 我不确定该如何回头看。请注意假期的列表不仅仅是周六和周日。它们是乡村节日,如中国的新年等。 我正在使用Java8,因此任何重构或改进都是受欢迎的:)

  • 问题内容: 我在Spring 3.0项目中使用Joda time api计算日期。现在我有一个开始日期和结束日期,我想在这两个日期之间得到每天的周末,星期六或星期日。我该如何实现? 我看了这篇Joda的时间-两个日期之间的所有星期一。它提供了一些指导,但在如何排除两个日期方面仍然含糊。 问题答案: 我想你的问题是如何 在两个日期之间的周末,星期六或星期日除外的每一天获取。 解决方案 :

  • 本文向大家介绍php计算给定日期所在周的开始日期和结束日期示例,包括了php计算给定日期所在周的开始日期和结束日期示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php计算给定日期所在周的开始日期和结束日期。分享给大家供大家参考,具体如下: 运行结果如下: PS:这里再为大家推荐几款时间及日期相关工具供大家参考使用: 在线日期/天数计算器: http://tools.jb51.net/

  • 假设我有一些账单,上面有开始日期和结束日期。 我要检查的商业规则是 例如,3月10日到4月9日大约相隔一个月,所以我用它来检查任何两个连续的账单开始日期(4月10日和3月10日)是否相隔一个月。 现在我的问题是求周期的长度。例如,假设我有以下数据集 我正在使用JodaTime库,所以我说类似这样的话 它返回0,这是正确的,但没有用处。 结果是1,尽管相隔一天。 有什么更好的方法来做到这一点?我可以