El mismo problema para Find day difference between two dates (excluding weekend days) pero es para javascript. ¿Cómo hacer eso en Python?¿Encontrar diferencia de días entre dos fechas (excluyendo días de fin de semana) en Python?
Respuesta
Prueba 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 parecen depricated: http://pytseries.sourceforge.net/
Con pandas vez alguien puede hacer:
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
No estoy seguro de que esta es la mejor solución, pero funciona para mí:
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
O reste 2 * (el número de días // 7) y luego ajuste la posición de los días de inicio y fin de la semana si desea algo más rápido. – agf
Aquí está un O (1) solución de clase de la complejidad que sólo se utiliza una función de bibliotecas de Python.
Tiene un rendimiento constante independientemente de la duración del intervalo de tiempo y no le importa el orden de los argumentos.
#
# 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. Diferencia de días entre dos fechas
- 2. Días entre dos fechas en Python
- 3. Número de días entre dos fechas
- 4. ¿Cómo encontrar el número de días entre dos fechas
- 5. Contabilizar días de trabajo entre dos fechas
- 6. Días, horas, minutos, segundos entre dos fechas
- 7. Obtener rango de fechas entre dos fechas excluyendo fines de semana
- 8. Número de días entre dos fechas en Joda-Time
- 9. r - búsqueda de diferencia entre días hábiles
- 10. ¿Cálculo de cuántos días hay entre dos fechas en DB2?
- 11. Calcular el número de días hábiles entre dos días
- 12. Diferencia entre dos fechas en Python
- 13. Buscar número de días de la semana/fines de semana en un rango de fechas dado
- 14. fechas consistentemente dos días de descanso
- 15. Número de días entre dos fechas: ANSI SQL
- 16. Java, calcular el número de días entre dos fechas
- 17. iPhone - obtenga el número de días entre dos fechas
- 18. ¿Cómo encontrar el número de días entre dos fechas en Java o Groovy?
- 19. Subconjunto R X días de la semana
- 20. ¿Diferencia de MySql entre dos marcas de tiempo en días?
- 21. Generador de rango de fechas de Python durante días hábiles
- 22. Procedimientos almacenados - Fin de días
- 23. ¿Cómo contar días entre dos fechas en PHP?
- 24. ¿Cómo obtener el número de días de diferencia entre dos fechas en mysql?
- 25. ¿Cómo calculo el número de días, menos los domingos, entre dos fechas en C#?
- 26. MySQL cálculo semana entre dos fechas
- 27. Días hábiles en Python
- 28. ¿Cómo puedo encontrar la diferencia entre dos fechas usando Javascript
- 29. NSCalendar obteniendo la diferencia de días incorrecta
- 30. ¿Cómo calculo el número de días entre dos fechas usando Python?
Esta pregunta parece estar pidiendo una transliteración de un código fuente de un idioma a otro. – Arafangion