Lo stesso problema a Find day difference between two dates (excluding weekend days) ma è per javascript. Come farlo in Python?Trova differenza di giorno tra due giorni (esclusi i giorni del fine settimana) in Python?
risposta
provare con 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
o con 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 sembrano depricated: http://pytseries.sourceforge.net/
con i panda invece qualcuno può fare:
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
Non sono sicuro che questa sia la migliore soluzione, ma funziona per me:
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
Oppure sottrarre 2 * (il numero di giorni // 7) e quindi regolare la posizione dei giorni di inizio e fine della settimana se si desidera qualcosa di più veloce. – agf
Ecco un O (1) soluzione di classe di complessità che utilizza solo built-in librerie Python.
Ha prestazioni costanti indipendentemente dalla lunghezza dell'intervallo di tempo e non si preoccupa dell'ordine di argomenti.
#
# 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. Come generare un intervallo di date in kdb esclusi i giorni del fine settimana?
- 2. Jfreechart: come escludere i giorni del fine settimana dal grafico?
- 3. MySql differenza tra due timestamp in giorni?
- 4. r - trovare la differenza tra giorni lavorativi
- 5. Posso calcolare quanti giorni di fine settimana sono disponibili tra due date in SQL Server?
- 6. Giorni lavorativi in Python
- 7. Android fornisce un'API per determinare i giorni del fine settimana che è sensibile alle impostazioni internazionali?
- 8. Trova numero di giorni feriali/fine settimana in un determinato intervallo di date
- 9. Calcolare il numero di giorni lavorativi tra due giorni
- 10. Utilità di pianificazione 6 giorni alla settimana
- 11. Come escludere i giorni del fine settimana in una query di SQL Server?
- 12. C giorni di programma tra due date
- 13. Giorni, ore, minuti, secondi tra due date
- 14. C'è qualche differenza in strtotime + giorno o + giorni?
- 15. Errore calcolo differenza giorni PHP
- 16. Creare un vettore di tutti i giorni tra due date
- 17. Calcola i giorni tra due date in Java 8
- 18. java.util.Date Calcolare la differenza in giorni
- 19. Aggiungere n giorni lavorativi a una determinata data ignorando le festività ei fine settimana in python
- 20. Come ottenere il giorno lavorativo successivo, esclusi i fine settimana e festivi
- 21. Come si calcola il numero di giorni, meno domeniche, tra due date in C#?
- 22. Calcola il numero di giorni tra due date in java
- 23. Calcola il numero di giorni della settimana tra due date in C#
- 24. Come calcolare i giorni totali tra due date di calendario selezionate
- 25. Aggiunta di giorni al giorno specifico
- 26. momento js - due date differenza nel numero di giorni
- 27. Calcola i giorni del mese
- 28. Generatore di intervalli di date in Python durante i giorni lavorativi
- 29. Come calcolare il conteggio dei giorni lavorativi tra due date?
- 30. Come ottenere il numero di giorni tra due istanze del calendario?
Questa domanda sembra richiedere una traslitterazione di un codice sorgente in un'altra lingua. – Arafangion