如何计算自epoch以来已经过去的完整工作日(排除周末)数量
实现逻辑说明
你只需要在原有计算逻辑的基础上,加上剩余不满一周天数的工作日统计即可,核心逻辑如下:
- 先计算当前已经完整度过的自然天数
total_days - 按完整周计算基础工作日:每完整周固定贡献5个工作日
- 利用1970年1月1日为周四的前提,做剩余天数的工作日映射统计,直接查表得到额外工作日数量
完整可运行代码
from time import time def count_passed_workdays(): secs = time() total_days = int(secs // (24 * 60 * 60)) # 完整周贡献的工作日 full_weeks = total_days // 7 workdays = full_weeks * 5 # 剩余天数对应的工作日映射表,索引为剩余天数,值为对应工作日数量 # 剩余天数从0开始,对应过完的天数依次为周四、周五、周六、周日、周一、周二、周三 rem_lookup = [0, 1, 2, 2, 2, 3, 4] remainder = total_days % 7 workdays += rem_lookup[remainder] return workdays print(count_passed_workdays())
规则验证
我们可以用你给出的规则做正确性校验:
- 假设周五当天未结束时,已度过的天数里包含前一天周四,返回结果2000
- 周五过完进入周六时,
total_days加1,查表得额外增加1个工作日,结果变为2001,符合要求 - 周六、周日过完进入周一的时候,
total_days共增加2次,但两次查表都不会增加工作日计数,结果保持2001 - 周一过完进入周二时,
total_days再加1,查表额外增加1个工作日,结果变为2002,完全符合规则
内容的提问来源于stack exchange,提问作者Muhammad Usman
相关产品推荐
相关产品推荐

