Cùng một vấn đề với Find day difference between two dates (excluding weekend days) nhưng nó là dành cho javascript. Làm thế nào để làm điều đó trong Python?Tìm sự khác biệt ngày giữa hai thời gian biểu (không kể ngày cuối tuần) bằng Python?
Trả lời
Hãy thử nó với scikits.timeseries:
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
hoặc với 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 nhìn depricated: http://pytseries.sourceforge.net/
Với gấu trúc thay vì một người nào đó có thể làm:
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
Không chắc rằng đây là một trong những giải pháp tốt nhất nhưng nó làm việc cho tôi:
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
Hoặc trừ 2 * (số ngày // 7) và sau đó điều chỉnh vị trí của ngày bắt đầu và ngày kết thúc trong tuần nếu bạn muốn điều gì đó nhanh hơn. – agf
Dưới đây là một O (1) giải pháp lớp phức tạp mà chỉ sử dụng được xây dựng trong thư viện Python.
Nó có hiệu suất không đổi bất kể độ dài khoảng thời gian và không quan tâm đến thứ tự đối số.
#
# 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. Sự khác biệt số nguyên trong python giữa hai ngày
- 2. C# - Sự khác biệt giữa hai ngày?
- 3. Sự khác biệt giữa MySql giữa hai dấu thời gian trong ngày?
- 4. Sự khác biệt giữa hai ngày trong Python
- 5. Sự khác biệt, tính bằng phút, giữa hai ngày
- 6. sự khác biệt trong vài giây giữa hai ngày sử dụng thời gian joda?
- 7. Cách tạo phạm vi ngày bằng kdb không kể ngày cuối tuần?
- 8. Sự khác biệt giữa 'Ngày' và 'Ngày trong tuần' trong khởi chạy StartCalendarInterval là gì?
- 9. SPARQL Tính khác biệt giữa hai ngày
- 10. Sự khác biệt PHP trong tháng giữa hai ngày?
- 11. Tính toán thời gian giữa hai ngày?
- 12. Nhận phạm vi ngày giữa hai ngày trừ ngày cuối tuần
- 13. Trong Rails, thời gian hiển thị giữa hai ngày bằng tiếng Anh
- 14. Thời gian Joda, Nhận ngày trong tuần
- 15. cách tìm sự khác biệt giữa năm và tháng giữa hai ngày?
- 16. Cách tìm sự khác biệt giữa các ngày trong VBA
- 17. Sự khác biệt giữa hai NSDates
- 18. Sự khác biệt giữa thời gian() và MongoDate mới()?
- 19. Số ngày trong phạm vi ngày, trừ ngày cuối tuần và các ngày khác, trong C#
- 20. Tính toán sự khác biệt giữa ngày/giờ trong PHP
- 21. Ngày giữa hai ngày trong Python
- 22. Sự khác biệt về thời gian Python
- 23. Tìm ngày của Thứ Hai bằng Python
- 24. Làm cách nào để có được sự khác biệt giữa hai Ngày trong JavaScript?
- 25. Hiển thị sự khác biệt giữa hai giá trị ngày giờ trong giờ
- 26. Khoảng thời gian giữa hai ngày trong Groovy
- 27. Jquery - Lấy thời gian trong HH: MM giữa hai ngày
- 28. Tìm số ngày trong tuần/cuối tuần trong một phạm vi ngày nhất định
- 29. Sự khác biệt giữa các ngày trong JavaScript
- 30. Số ngày giữa hai ngày trong Joda-Time
Câu hỏi này dường như yêu cầu chuyển ngữ mã nguồn ngôn ngữ này sang mã nguồn ngôn ngữ khác. – Arafangion