如何获得自纪元以来已经过去的工作日数?

How to get the number of weekdays, that have passed since epoch?

使用如下所示的简单代码,您可以获得自纪元以来经过的天数。

from time import time
secs = time()
day = 24 * 60 * 60
days = int(secs // day)
print(days)

但现在我需要防止所有的星期六和星期日都被计入计数。第一步是获取已经过去的完整周数并将其乘以 5。

from time import time
secs = time()
week = 7 * 24 * 60 * 60
weekDays = int(secs // week)
weekDays *= 5
print(weekDays)

但我不知道,下一步该做什么。注意任务是找出已经过去的FULL个工作日,所以在第1000个工作日,答案应该是999.

此外,如果给定星期五的答案是 2000,那么它应该在星期六增加到 2001,因为现在我们还有一个完整的星期五,已经过去了。答案应该在星期天和星期一保持不变,但在星期二增加到 2002,因为现在我们有一个额外的完整星期一,已经过去了。

我查了一下,1970 年 1 月 1 日(纪元日期)是星期四,所以我想必须考虑到这一点。

我希望我能够简单而完整地解释我的问题。如果没有,请在评论中提问。期待您的回答。提前致谢。

从开始日期到结束日期进行迭代并过滤掉周六和周日:

from datetime import date, datetime, timedelta
def daterange(startDate, endDate, delta=timedelta(days=1)):
    currentDate = startDate
    while currentDate <= endDate:
        # Exclude weekends!
        if currentDate.isoweekday() < 6:
            yield 1
        currentDate += delta


_start = datetime(1995, 11, 5).date()
_end = datetime(1995, 11, 8).date()

print(f"Found {sum(daterange(_start, _end))} work days")

输出:

Found 3 work days