[pyar] Contar dias habiles

Sofi Denner sofi.denner en gmail.com
Jue Mar 1 07:57:30 -03 2018


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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20180301/058e9541/attachment-0001.html>


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