[pyar] Contar dias habiles

Diego RR diegoriquelme81 en gmail.com
Jue Mar 1 09:08:17 -03 2018


Podrías probar:

from calendar import monthrange, weekday, SUNDAY

year, month = 2017, 12
days = monthrange(year, month) # (4, 31)
sundays = filter(lambda d: weekday(year, month, d+1) == SUNDAY,
range(days[1]))
print days[1] - len(sundays)

El 1 de marzo de 2018, 8:16, Augusto Tononi <adtononi en gmail.com> escribió:

> No te sirve iterar sobre  el mes y poner not in ['SA', 'SU' ]?
> Después usas len y listo
> El mar. 1, 2018 7:58 AM, "Sofi Denner" <sofi.denner en gmail.com> escribió:
>
>> El módulo calendar te puede servir para lo que estas necesitando.
>>
>> calendar.monthcalendar(year, month) te devuelve una matriz donde cada
>> fila es una semana (colocando 0 en los días de la semana que no están
>> incluidos en el mes). Con esta función podrías contar la cantidad de
>> domingos que tiene el mes.
>>
>> calendar.monthrange(year, month) te devuelve una tupla, cuyo segundo
>> elemento es la cantidad de días del mes. Restando la cantidad de días - la
>> cantidad de domingos obtendrías los días hábiles.
>>
>>
>> import calendar
>>
>> sundays = len([1 for week in calendar.monthcalendar(2018, 2) if week[6]
>> != 0])
>> bus_days = calendar.monthcalendar(2018, 2)[1] - sundays
>>
>>
>>
>> Espero te sirva.
>>
>> Saludos!
>>
>> El jue., 1 de mar. de 2018 a la(s) 00:38, Federico Jurio <
>> fdjurio en gmail.com> escribió:
>>
>>> Podés usar el módulo rrule
>>> <http://dateutil.readthedocs.io/en/stable/rrule.html>
>>> Te dejo un snippet que resuelve la cantidad de días hábiles considerando
>>> los Sábados para el mes de Enero 2018.
>>>
>>> import datetime
>>> from dateutil import rrule
>>>
>>> start_date = datetime.date(2018, 1, 1)
>>> end_date = datetime.date(2018, 1, 31)
>>>
>>> dates = rrule.rruleset()
>>>
>>> # start_date y end_date estan incluidos en dates
>>> dates.rrule(
>>>     rrule.rrule(
>>>         rrule.DAILY,
>>>         dtstart=start_date,
>>>         until=end_date
>>>     )
>>> )
>>>
>>> # Excluimos los dias
>>> dates.exrule(
>>>     rrule.rrule(
>>>         rrule.DAILY,
>>>         byweekday=rrule.SU,
>>>         # Ejemplo si quisieramos excluir Sabados y Domingos
>>>         # byweekday=(rrule.SA, rrule.SU),
>>>         dtstart=start_date
>>>     )
>>> )
>>>
>>> dates.rrule(
>>>     rrule.rrule(rrule.DAILY, dtstart=start_date, until=end_date)
>>> )
>>>
>>> print(len(list(dates)))
>>>
>>> Saludos
>>>
>>> 2018-02-28 21:32 GMT-03:00 Javier Pepe <javierpepe en gmail.com>:
>>>
>>>> Luciano
>>>>
>>>> Posiblemente la funcion este tomando los dias dentro del intervalo de
>>>> fechas, podrias sumar un dia a enddate y despues realizar la cuenta.
>>>>
>>>> Saludos
>>>>
>>>> El 28 de febrero de 2018, 20:32, Luciano Bovio<omicronvt en gmail.com>
>>>> escribió:
>>>>
>>>>> Hola, estoy tratando de encontrar una manera de contar los días
>>>>> hábiles de cada mes, puede ser el actual o pasado. Es algo genérico así que
>>>>> son todos los días menos los domingos.
>>>>> Además tengo que calcular un porcentaje de días transcurridos/sobre
>>>>> días hábiles.
>>>>>
>>>>> Lo más simple que encontré es con numpy:
>>>>>
>>>>> diashabiles=numpy.busday_count(desde,hasta,weekmask='1111110')
>>>>>
>>>>> Funciona perfecto excepto que no me cuenta el día de 'fecha
>>>>> hasta'(enddates).....
>>>>>
>>>>> Ejemplo:
>>>>> dias=numpy.busday_count(datetime.date(2018,02,01),datetime.
>>>>> date.today(),weekmask='1111110')
>>>>> da como resultado 23 y necesitaría 24
>>>>>
>>>>>
>>>>> Lo que se me ocurre es sumarle un día a 'fecha hasta' lo cual funciona
>>>>> siempre y cuando la 'fecha hasta' no sea domingo, para lo cual tendría que
>>>>> chequear si 'fecha hasta' es domingo y restar un día
>>>>>
>>>>> Que recomiendan ?
>>>>>
>>>>> Saludos Luciano
>>>>> _______________________________________________
>>>>> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
>>>>> Sitio web: http://www.python.org.ar/
>>>>>
>>>>> Para administrar la lista (o desuscribirse) entrar a
>>>>> http://listas.python.org.ar/listinfo/pyar
>>>>>
>>>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>>>> Argentina - http://www.usla.org.ar
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
>>>> Sitio web: http://www.python.org.ar/
>>>>
>>>> Para administrar la lista (o desuscribirse) entrar a
>>>> http://listas.python.org.ar/listinfo/pyar
>>>>
>>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>>> Argentina - http://www.usla.org.ar
>>>>
>>>
>>>
>>>
>>> --
>>>
>>> *Federico Daniel Jurio*
>>> Analista de Sistemas
>>> TE: +54 9 11 6428 7919
>>> Skype: fdjurio
>>>
>>> [image: LinkedIn] <https://www.linkedin.com/in/juriofederico> [image:
>>> GitHub] <https://github.com/FedericoJurio> [image: Facebook]
>>> <https://www.facebook.com/juriofederico>
>>> _______________________________________________
>>> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
>>> Sitio web: http://www.python.org.ar/
>>>
>>> Para administrar la lista (o desuscribirse) entrar a
>>> http://listas.python.org.ar/listinfo/pyar
>>>
>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>> Argentina - http://www.usla.org.ar
>>
>>
>> _______________________________________________
>> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
>> Sitio web: http://www.python.org.ar/
>>
>> Para administrar la lista (o desuscribirse) entrar a
>> http://listas.python.org.ar/listinfo/pyar
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>
> _______________________________________________
> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
> Sitio web: http://www.python.org.ar/
>
> Para administrar la lista (o desuscribirse) entrar a
> http://listas.python.org.ar/listinfo/pyar
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>



-- 
*Diego R. Riquelme*
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20180301/607f8c0f/attachment.html>


Más información sobre la lista de distribución pyar