python - example - Detectando un día festivo en los Estados Unidos
timedelta python example (5)
¿Cuál es la forma más sencilla de determinar si una fecha es un feriado bancario estadounidense en Python? Parece que hay varios calendarios y servicios web que incluyen días festivos para varios países, pero no he encontrado nada específico para los bancos en los Estados Unidos.
Algunos comentarios generales:
No creo que @ ast4 realmente signifique "nth day of nth week of nth month algorithm". La noción de "novena semana en el noveno mes" es alucinante (como el "calendario ISO"). Nunca he visto unas vacaciones definidas en términos de "semana n". El Día de Martin Luther King es un ejemplo del tipo de día de fiesta "Nth week in month":
MONDAY, ...., SATURDAY = range(7)
JAN, ....., DEC = range(1, 12)
Holiday("Martin L King''s Birthday", type=''floating'',
ordinal=3, weekday=MON, month=JAN)
Holiday("Memorial Day", type=''floating'',
ordinal=-1, weekday=MON, month=MAY)
Los Estados Unidos no tienen vacaciones relacionadas con la Pascua. La definición no es difícil:
Holiday("Good Friday", type=''moveable'',
base=''gregorian_easter'', delta_days=-2)
Holiday("Easter Monday", etc, delta_days=1)
# Some states in Australia used to have Easter Tuesday (no kidding)
Holiday("Easter Tuesday", etc, delta_days=2)
La idea ''base'' se puede utilizar para atender el año nuevo lunar, de hecho, cualquier día festivo que sea un desplazamiento de una fecha base que necesite un procedimiento especial para calcularlo.
Los días festivos llamados "estáticos" no se fijan cuando la fecha "fija" es un sábado o domingo y pueden incluso desaparecer (no hay un día alternativo sin trabajo):
# Americans will get a day off on Friday 31 Dec 2010
# because 1 Jan 2011 is a Saturday.
Holiday("New Year''s Day", type=''fixed'',
day=1, month=JAN, sat_adj=-1, sun_adj=????)
# Australia observes ANZAC Day on the day, with no day off
# if the fixed date falls on a weekend.
Holiday("ANZAC Day", type=''fixed'', day=25, month=APR, sat_adj=0, sun_adj=0)
# Two consecutive "fixed" holidays is OK; three would need re-thinking.
# Australia again:
Holiday("Christmas Day", type=''fixed'', day=25, month=DEC, sat_adj=2, sun_adj=1)
Holiday("Boxing Day", type=''fixed'', day=26, month=DEC, sat_adj=2, sun_adj=2)
Estoy seguro de que hay formas de especificar los días festivos que no están cubiertas por las reglas anteriores ... cualquier noticia de este tipo es bienvenida.
Asegúrese de fecha! = Uno de estos:
De hecho, he trabajado recientemente en un problema muy parecido a este. Los días festivos estáticos son más bien triviales de generar (por ejemplo, víspera de Año Nuevo - 31 de diciembre, (ciclo a través de años)). Hay algoritmos bien definidos para generar las vacaciones flotantes. Esencialmente tienes una fecha de inicio (por ejemplo, el 1 de enero de 1900) y trabajas desde allí. Lo que terminé implementando fue un día n de la semana n del algoritmo del mes n (por ejemplo, día MLK = 3er lunes de enero). La Pascua es un poco diferente de hacer, pero nuevamente hay algoritmos bien definidos para eso (el Viernes Santo es trivial después de enero).
Hay un libro bastante decente sobre esto que tal vez quieras revisar: Cálculos de calendario
El paquete Pandas proporciona una solución conveniente para esto:
from pandas.tseries.holiday import USFederalHolidayCalendar
cal = USFederalHolidayCalendar()
holidays = cal.holidays(start=''2014-01-01'', end=''2014-12-31'').to_pydatetime()
if datetime.datetime(2014,01,01) in holidays:
print True
Utilice la biblioteca de vacaciones en python.
pip instalar vacaciones
Para vacaciones en USA:
1. Para comprobar una fecha de vacaciones o no.
from datetime import date
import holidays
# Select country
us_holidays = holidays.US()
# If it is a holidays then it returns True else False
print(''01-01-2018'' in us_holidays)
print(''02-01-2018'' in us_holidays)
# What holidays is it?
print(us_holidays.get(''01-01-2018''))
print(us_holidays.get(''02-01-2018''))
2. Para enumerar todos los días festivos en los Estados Unidos:
from datetime import date
import holidays
# Select country
us_holidays = holidays.US()
# Print all the holidays in US in year 2018
for ptr in holidays.US(years = 2018).items():
print(ptr)
Puede encontrar días festivos para cualquier país que le guste en la lista de países que figuran en mi Blog. Mi blog de vacaciones