如何获得自纪元以来已经过去的工作日数?
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
使用如下所示的简单代码,您可以获得自纪元以来经过的天数。
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