È uscito il Corso Java Completo — usa il coupon JAVA2026 (fino al 30 giugno)

Esercizi Data e Ora Python

Ecco degli esercizi semplici con soluzione per praticare l’utilizzo di Datetime (data e ora) in Python.

Esercizio 1

Scrivi un programma che stampa la data e l'ora corrente.
import datetime

now = datetime.datetime.now()
print("Data e ora corrente:", now)

Esercizio 2

Scrivi un programma che prende in input una data in formato "gg/mm/aaaa" e stampa il nome del mese corrispondente.
import datetime

data = input("Inserisci una data (gg/mm/aaaa): ")
data = datetime.datetime.strptime(data, "%d/%m/%Y")

nome_mese = data.strftime("%B")
print("Il nome del mese corrispondente è:", nome_mese)

Esercizio 3

Scrivi un programma che prende in input due date e calcola la differenza in giorni tra le due.
import datetime

data1 = input("Inserisci la prima data (gg/mm/aaaa): ")
data2 = input("Inserisci la seconda data (gg/mm/aaaa): ")

data1 = datetime.datetime.strptime(data1, "%d/%m/%Y")
data2 = datetime.datetime.strptime(data2, "%d/%m/%Y")

diff = abs(data2 - data1).days
print("La differenza in giorni tra le due date è:", diff)

Esercizio 4

Scrivi un programma che prende in input una data e un numero di giorni, e calcola la data che viene dopo quella data del numero di giorni specificato.
import datetime

data = input("Inserisci una data (gg/mm/aaaa): ")
num_giorni = int(input("Inserisci il numero di giorni: "))

data = datetime.datetime.strptime(data, "%d/%m/%Y")
nuova_data = data + datetime.timedelta(days=num_giorni)

print("La nuova data è:", nuova_data.strftime("%d/%m/%Y"))

Esercizio 5

Scrivi un programma che stampa tutti i giorni di un determinato mese e anno.
import calendar

anno = int(input("Inserisci l'anno: "))
mese = int(input("Inserisci il mese (1-12): "))

cal = calendar.monthcalendar(anno, mese)
for settimana in cal:
    for giorno in settimana:
        if giorno != 0:
            print(giorno)

Esercizio 6

Scrivi un programma che prende in input una data in formato "gg/mm/aaaa" e verifica se l'anno è bisestile o meno.
import datetime

data = input("Inserisci una data (gg/mm/aaaa): ")
data = datetime.datetime.strptime(data, "%d/%m/%Y")

if calendar.isleap(data.year):
    print("L'anno è bisestile.")
else:
    print("L'anno non è bisestile.")

Esercizio 7

Scrivi un programma che prende in input due date e stampa tutte le date comprese tra le due (inclusi i bordi).
import datetime

data1 = input("Inserisci la prima data (gg/mm/aaaa): ")
data2 = input("Inserisci la seconda data (gg/mm/aaaa): ")

data1 = datetime.datetime.strptime(data1, "%d/%m/%Y")
data2 = datetime.datetime.strptime(data2, "%d/%m/%Y")

delta = datetime.timedelta(days=1)

while data1 <= data2:
    print(data1.strftime("%d/%m/%Y"))
    data1 += delta

Esercizio 8

Scrivi una funzione che prenda in input due date come oggetti datetime e restituisca il numero di giorni trascorsi tra di esse.
from datetime import datetime

def giorni_trascorsi(date1, date2):
    diff = date2 - date1
    return diff.days

data1 = datetime(2022, 5, 1)
data2 = datetime(2022, 5, 10)
print(giorni_trascorsi(data1, data2))  # output: 9

Esercizio 9

Scrivi una funzione che prenda in input una data come oggetto datetime e restituisca il giorno della settimana corrispondente come stringa.
from datetime import datetime

def giorno_settimana(data):
    giorni_settimana = ['lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato', 'domenica']
    giorno = giorni_settimana[data.weekday()]
    return giorno

data = datetime(2022, 5, 1)
print(giorno_settimana(data))  # output: domenica

Esercizio 10

Scrivi una funzione che prenda in input una data come oggetto datetime e restituisca il numero della settimana corrispondente nell'anno.
from datetime import datetime

def settimana_anno(data):
    anno, num_settimana, _ = data.isocalendar()
    return f"Anno {anno}, settimana {num_settimana}"

data = datetime(2022, 5, 1)
print(settimana_anno(data))  # output: Anno 2022, settimana 17