Py学习  »  Python

如何在Python中找到两个日期之间的工作日数?[副本]

niekas houzayfa rifai • 5 年前 • 1455 次点击  

我有两次约会 datetime.date 对象,在这两个日期之间(包括开始日期和不包括结束日期)找到多个工作日的最简单的方法是什么?例如:

from datetime import date, timedelta

d1 = date(2019, 3, 1)
d2 = date(2019, 5, 6)
# The difference between d2 and d1 is 46 workdays

workdays = 0
for i in range((d2 - d1).days):
    if (d1 + timedelta(days=i)).isoweekday() <= 5:
        workdays += 1

但是,我认为有一种更简单的方法来解决这个问题。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/56605
 
1455 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Klemen Koleša
Reply   •   1 楼
Klemen KoleÅ¡a    6 年前

你可以试试这个:

不放假,。。考虑到:

import numpy as np
np.busday_count(d1.strftime("%Y-%m-%d"), d2.strftime("%Y-%m-%d"))
ncica
Reply   •   2 楼
ncica    6 年前

使用numpy函数busday\u count:

from datetime import date
import numpy as np

d1 = date(2019, 3, 1)
d2 = date(2019, 5, 6)

days = np.busday_count( d1, d2 )
print (days)

from datetime import date,timedelta
d1 = date(2019, 3, 1)
d2 = date(2019, 5, 6)
daygenerator = (d1 + timedelta(x + 1) for x in range((d2 - d1).days)) # generate all days from d1 to d2
print (sum(1 for day in daygenerator if day.weekday() < 5))