#calcolo del numero di giorni lavorativi all'anno, per esempio il 2023
from datetime import date, timedelta
def count_weekdays_excluding_holidays(year, holidays):
start_date = date(year, 1, 1)
end_date = date(year, 12, 31)
total_weekdays = 0
holidays_set = set(date(year, int(d.split('/')[1]), int(d.split('/')[0])) for d in holidays)
current_date = start_date
while current_date <= end_date:
if current_date.weekday() < 5 and current_date not in holidays_set:
total_weekdays += 1
current_date += timedelta(days=1)
return total_weekdays
# Festività 2023
holidays_2023 = ["1/1", "6/1", "10/4", "25/4", "1/5", "2/6", "29/6",
"15/8", "1/11", "8/12", "25/12", "26/12"]
print(count_weekdays_excluding_holidays(2023, holidays_2023))
#-------------------------------------------------------------------------------------
#calcolo del numero di giorni lavorativi all'anno per mese, in questo caso il 2023, con scrittura del mese e numero giorni
from datetime import date, timedelta
import calendar
def monthly_working_days(year, holidays):
monthly_days = {}
holidays_set = set(date(year, int(d.split('/')[1]), int(d.split('/')[0])) for d in holidays)
for month in range(1, 13):
total_days = 0
for day in range(1, calendar.monthrange(year, month)[1] + 1):
current_date = date(year, month, day)
if current_date.weekday() < 5 and current_date not in holidays_set:
total_days += 1
month_name = calendar.month_name[month]
monthly_days[month_name] = total_days
return monthly_days
# Festivi
holidays_2023 = ["1/1", "6/1", "10/4", "25/4", "1/5", "2/6", "29/6", "15/8", "1/11", "8/12", "25/12", "26/12"]
monthly_working_days_2023 = monthly_working_days(2023, holidays_2023)
print(monthly_working_days_2023)
#Risultato: {'January': 21, 'February': 20, 'March': 23, 'April': 18, 'May': 22,
'June': 20, 'July': 21, 'August': 22, 'September': 21, 'October': 22, 'November': 21, 'December': 18}
Sorgenti, linguaggi, best practice, suggerimenti, sul mondo della programmazione e non solo
martedì 21 novembre 2023
Calcolo in python dei giorni lavorativi (lunedì venerdì) per anno 2023, escludendo le feste se capitano dal lunedì al venerdì.
Questo è un esempio di un calcolo in python dei giorni lavorativi (lunedì venerdì) per anno 2023, escludendo le feste se capitano dal lunedì al venerdì.
La Pasquetta e il S.Patrono sono variabili ma le altre sono fisse: 1 e 6 gennaio, 10 aprile pasquetta per il 2023, 25 aprile, 1 maggio, 2 giugno, 29 giugno (S.Patrono a Roma), 15 agosto, 1 novembre, 8 dicembre, 25 e 26 dicembre.
Il secondo script è parziale per la scrittura del mese e dei giorni.
Sostitutendo l'anno si potranno avere altri risultati, ma ricordarsi di inserire il giorno di Pasquetta corretto.
Basta copiare gli script in un qualsiasi editor online per eseguire una verifica.