es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Qué días festivos se celebran en una fecha particular y en qué países?

Quiero saber si una fecha específica (en este ejemplo la fecha de hoy) es feriado en algún lugar del mundo. Si es así, me gustaría crear una lista con tuplas, en cada tupla: (nombre del feriado, ubicación en el mundo). Si no es feriado en ningún lugar, la lista estará vacía.
Intenté importar holidays pero necesito ejecutarlo en cada país, como en este ejemplo:
¿Alguien tiene algo más eficiente?

from datetime import date
import holidays

listaDeFeriados = []
for ptr in holidays.ISR(years=date.today().year).items():
    if date.today() == ptr[0]:
        listaDeFeriados.append((ptr[1], "ISRAEL"))

for ptr in holidays.US(years=date.today().year).items():
    if date.today() == ptr[0]:
        listaDeFeriados.append((ptr[1], "EE. UU."))

for ptr in holidays.UK(years=date.today().year).items():
    if date.today() == ptr[0]:
        listaDeFeriados.append((ptr[1], "Reino Unido"))

for ptr in holidays.CHN(years=date.today().year).items():
    if date.today() == ptr[0]:
        listaDeFeriados.append((ptr[1], "China"))

print(listaDeFeriados)
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para verificar si la fecha de hoy es un feriado en algún lugar del mundo y crear una lista de tuplas con el nombre y la ubicación del feriado, se puede utilizar el módulo holidays en Python. Aquí hay una solución más eficiente:

    from datetime import date
    import holidays
    
    listOfHolidays = []
    for country in holidays.CountryHoliday.codes().keys():
        for ptr in holidays.CountryHoliday(country, years=date.today().year).items():
            if date.today() == ptr[0]:
                listOfHolidays.append((ptr[1], country))
    
    if not listOfHolidays:
        print("Hoy no hay feriados.")
    else:
        print(listOfHolidays)
    

    Este código recorre todos los países disponibles en holidays.CountryHoliday.codes().keys() y verifica si la fecha de hoy es un feriado en cada país. Si lo es, se agrega una tupla con el nombre del feriado y el código del país a listOfHolidays. Si no hay feriados hoy, se devuelve una lista vacía.

    Esta solución es más eficiente porque verifica dinámicamente los feriados en todos los países disponibles en lugar de codificar cada país manualmente.

Comments are closed.