與Find day difference between two dates (excluding weekend days)相同的問題,但它是用於JavaScript。如何在Python中做到這一點?在Python中查找兩個日期時間(不包括週末天數)之間的日差?
5
A
回答
7
import scikits.timeseries as ts
import datetime
a = datetime.datetime(2011,8,1)
b = datetime.datetime(2011,8,29)
diff_business_days = ts.Date('B', b) - ts.Date('B', a)
# returns 20
或dateutil:
import datetime
from dateutil import rrule
a = datetime.datetime(2011,8,1)
b = datetime.datetime(2011,8,29)
diff_business_days = len(list(rrule.rrule(rrule.DAILY,
dtstart=a,
until=b - datetime.timedelta(days=1),
byweekday=(rrule.MO, rrule.TU, rrule.WE, rrule.TH, rrule.FR))))
個scikits.timeseries看depricated:http://pytseries.sourceforge.net/
隨着熊貓,而不是一個人可以這樣做:
import pandas as pd
a = datetime.datetime(2015, 10, 1)
b = datetime.datetime(2015, 10, 29)
diff_calendar_days = pd.date_range(a, b).size
diff_business_days = pd.bdate_range(a, b).size
1
不知道這是最好的解決方案,但它爲我工作:
from datetime import datetime, timedelta
startDate = datetime(2011, 7, 7)
endDate = datetime(2011, 10, 7)
dayDelta = timedelta(days=1)
diff = 0
while startDate != endDate:
if startDate.weekday() not in [5,6]:
diff += 1
startDate += dayDelta
+2
或者減去2 *(天數// 7),然後調整一週中開始和結束日期的位置,如果您希望更快一些。 – agf
2
這裏是一個O(1)複雜級解決方案,僅使用內置Python庫。
無論時間間隔長度如何,它都具有恆定的性能,並且不關心參數順序。
#
# by default, the last date is not inclusive
#
def workdaycount(first, second, inc = 0):
if first == second:
return 0
import math
if first > second:
first, second = second, first
if inc:
from datetime import timedelta
second += timedelta(days=1)
interval = (second - first).days
weekspan = int(math.ceil(interval/7.0))
if interval % 7 == 0:
return interval - weekspan * 2
else:
wdf = first.weekday()
if (wdf < 6) and ((interval + wdf) // 7 == weekspan):
modifier = 0
elif (wdf == 6) or ((interval + wdf + 1) // 7 == weekspan):
modifier = 1
else:
modifier = 2
return interval - (2 * weekspan - modifier)
#
# sample usage
#
print workdaycount(date(2011, 8, 15), date(2011, 8, 22)) # returns 5
print workdaycount(date(2011, 8, 15), date(2011, 8, 22), 1) # last date inclusive, returns 6
相關問題
- 1. 不包括日期時間的週末
- 2. 兩個日期之間的計數天數,不包括週末(僅限MySQL)
- 3. Sql計算兩個日期之間的天數,不包括週末和假日表中的日期
- 4. 獲取的時間差不包括在SQL Server週五兩個日期之間
- 5. 計算兩個日期之間的小時數 - 不包括週末
- 6. 如何在Unix中找到兩個日期時間(週末天數除外)之間的差異?
- 7. 兩個日期之間的天差
- 8. 計算日期給出兩個日期不包括週末
- 9. excel中兩個日期之間的差異僅包括假期
- 10. 查找excel中兩個日期/時間之間的天數和時間
- 11. 日期時間和日期格式之間的差異天數
- 12. 我想計算兩個日期之間的天數差異,不包括週末,在某些情況下兩個日期都爲NULL
- 13. Python - 排除兩個日期之間的週末
- 14. 兩個日期之間的差異python
- 15. datepicker禁用日期基於時間(不包括週末)
- 16. 添加秒到蟒蛇日期時間,不包括週末
- 17. 計算sql server中兩個日期之間的工作時間(不包括週末)
- 18. 兩個日期之間的時差
- 19. 查找Infopath中兩個日期字段之間的天數差異
- 20. 計算不包括晚上和週末的日期之間的分鐘數?
- 21. 兩個日期之間的總天數
- 22. 尋找兩個時間戳與日期之間的差異
- 23. 找到兩個日期時間之間的微小差異
- 24. 2個NSDates之間的差異,不包括週末?
- 25. 找到兩個日期時間數組之間的重複日期python
- 26. 如何找到兩個日期之間的小時數,不包括週末和Python中的某些節假日? BusinessHours包
- 27. 查找兩個日期之間發生的日期日期
- 28. 包括假期在內的兩個約定日期之間的天數
- 29. 如何查找兩個日期之間的天數?
- 30. 日期差異,包括時間
此問題似乎是要求將一種語言源代碼轉換爲另一種語言源代碼。 – Arafangion