nie*_*kas 0 python date python-3.x
我有两个日期作为datetime.date对象,查找这两个日期之间的工作日数(包括开始日期和排除结束日期)的最 Pythonic 方法是什么?例如:
from datetime import date, timedelta
d1 = date(2019, 3, 1)
d2 = date(2019, 5, 6)
# The difference between d2 and d1 is 46 workdays
Run Code Online (Sandbox Code Playgroud)
我想到写一个循环:
workdays = 0
for i in range((d2 - d1).days):
if (d1 + timedelta(days=i)).isoweekday() <= 5:
workdays += 1
Run Code Online (Sandbox Code Playgroud)
不过,我认为有一个更简单的方法可以解决这个问题。
使用numpy函数busday_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)
Run Code Online (Sandbox Code Playgroud)
或者
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))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4440 次 |
| 最近记录: |