Cómo obtener el número de días laborables que han transcurrido desde el epoch?
Con un código tan simple como se muestra a continuación, puedes obtener el número de días que han pasado desde la época.
from time import time
secs = time()
day = 24 * 60 * 60
days = int(secs // day)
print(days)
Pero ahora necesito evitar que todos los sábados y domingos se incluyan en el conteo. El primer paso sería obtener el número de semanas completas que han pasado y multiplicarlo por 5.
from time import time
secs = time()
week = 7 * 24 * 60 * 60
weekDays = int(secs // week)
weekDays *= 5
print(weekDays)
Pero no sé qué hacer a continuación. Ten en cuenta que la tarea es encontrar el número de días de semana COMPLETOS que han pasado, por lo que en el día de la semana 1000, la respuesta debería ser 999.
Además, si la respuesta en un viernes dado es 2000, entonces debería aumentar a 2001 el sábado porque ahora tenemos un viernes completo adicional que ha pasado. La respuesta luego debe mantenerse igual el domingo y el lunes, pero aumentar a 2002 el martes porque ahora tenemos un día lunes completo adicional que ha pasado.
Verifiqué y el día 1 de enero de 1970 (fecha de la época) fue jueves, así que supongo que eso debe tenerse en cuenta.
Espero poder explicar mi problema de manera clara y completa. Si no es así, por favor pregunte en los comentarios. Espero sus respuestas. Gracias de antemano.
davy.ai
Para llevar a cabo esta tarea, necesitamos calcular el número de días laborables que han transcurrido excluyendo los sábados y domingos. Sabemos que la fecha de inicio fue un jueves, por lo que podemos utilizar esto para calcular el número de días transcurridos desde el último jueves. Podemos empezar calculando el número de semanas completas que han pasado desde el inicio y luego sumar el número de días transcurridos desde el último jueves. Aquí tienes un código en Python que resuelve este problema:
Este código utiliza el módulo
datetime
para calcular el número de días desde el último jueves. La funcióndatetime.datetime.utcfromtimestamp(secs)
devuelve un objetodatetime
que representa la hora actual en UTC. Luego podemos llamar al métodoweekday()
para obtener el día de la semana como un número entero (0 para lunes, 1 para martes, etc.). Restamos 3 (porque jueves es el día 3) y tomamos el resultado módulo 7 para obtener el número de días desde el último jueves.Luego añadimos el número de semanas completas que han pasado multiplicado por 5 (para excluir los sábados y domingos) y añadimos
min(5, dias_desde_jueves)
para tener en cuenta los días laborables que han pasado desde el último jueves.Este código debería dar el resultado correcto para cualquier fecha posterior al inicio (1 de enero de 1970).