RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1544879
Accepted
randomname2000
randomname2000
Asked:2023-10-09 21:26:28 +0000 UTC2023-10-09 21:26:28 +0000 UTC 2023-10-09 21:26:28 +0000 UTC

两个日期之间的工作日数

  • 772

我有代码:

start_day: datetime.datetime = datetime.datetime.strptime(
  "06.10.2023 16:10", "%d.%m.%Y %H:%M"
)
current_day: datetime.datetime = datetime.datetime.strptime(
  "09.10.2023 16:10", "%d.%m.%Y %H:%M"
)
days_without_defects: datetime.timedelta = current_day - start_day

他会告诉我

3 days, 0:00:00

虽然我们计算了周五和周一的差异。我知道您可以求助于 numpy 库,特别是np.busday_count方法,但它没有考虑时间。如何在不使用任何有关假期等的 json 数据的情况下解决这个问题?

python
  • 2 2 个回答
  • 62 Views

2 个回答

  • Voted
  1. Best Answer
    Oopss
    2023-10-10T01:59:55Z2023-10-10T01:59:55Z

    我认为你计算工作日的概念不正确,但问题很有趣,我提出了一个非最优解决方案,检查每个时间增量此时是星期六还是星期日,你可以使用等于一秒、一分钟的增量或任何时间段。当然,任何国家的公共假期都不能考虑在内。

    import datetime
    
    
    def r_weekday(t_start, t_finish):
        if isinstance(t_start, datetime.datetime) and isinstance(t_finish, datetime.datetime):
            dt = t_finish - t_start           # общее время от начала до конца
            pp = datetime.timedelta(seconds=0)# Начальное значение приращения
            total_time = 0
            while pp < dt:                    # Пока сумма приращений меньше общего времени
                wd = (t_start + pp).weekday() # День недели в момент времени
                if wd <= 4:
                    total_time += 1
                pp += datetime.timedelta(seconds=1) # Приращение в одну секунду
            return total_time
        else:
            return -1
    
    def seconds_to_dhms(seconds): # перевод секунд в день час мин сек
        days = seconds // (3600 * 24)
        hours = (seconds // 3600) % 24
        minutes = (seconds // 60) % 60
        seconds = seconds % 60
        return days, hours, minutes, seconds
    
    start_day: datetime.datetime = datetime.datetime.strptime(
        "06.10.2023 16:10", "%d.%m.%Y %H:%M"
    )
    
    
    current_day: datetime.datetime = datetime.datetime.strptime(
      "09.10.2023 16:10", "%d.%m.%Y %H:%M"
    )
    print(seconds_to_dhms(r_weekday(start_day, current_day)))
    
    • 0
  2. strawdog
    2023-10-10T03:19:17Z2023-10-10T03:19:17Z

    我会得到 pandas 的时间序列,在选择必要的数据后,我会计算总和。让我们假设工作日不是在午夜开始和结束。在下面的代码中,工作日是从上午 9 点到下午 6 点,我将 current_day 设置为“09.10.2023 16:20”来添加分钟:

    import pandas as pd
    
    bdays = pd.DataFrame(index = pd.date_range(
        start_day, current_day,
        freq=pd.offsets.BusinessHour(start="09:00", end="18:00"))).reset_index()
    bdays["duration"] = bdays["index"].diff()
    res = bdays.loc[bdays["duration"]==pd.Timedelta("1H"), "duration"].sum() +\
                    pd.to_datetime(current_day) - bdays["index"].iloc[-1]
    print(res)
    

    0 天 08:10:00

    • 0

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5